cSharp中下IO操作
C语言中的文件操作与IO流处理技巧
C语言中的文件操作与IO流处理技巧C语言作为一门广泛应用于系统级编程和底层开发的编程语言,对文件操作与IO流处理有着重要的支持。
本文将介绍C语言中的文件操作和IO流处理技巧,帮助读者更好地理解和应用这些知识。
一、文件操作基础在C语言中,文件的操作主要涉及文件的打开、读写、关闭等操作。
下面将介绍一些常用的文件操作函数和技巧:1. 文件的打开与关闭使用C语言进行文件操作需要首先打开文件,并在操作完成后关闭文件。
打开文件可以使用`fopen()`函数,关闭文件使用`fclose()`函数。
下面是一个示例:```cFILE* fp;fp = fopen("file.txt", "r");// do somethingfclose(fp);```在打开文件时,需要指定文件名和打开模式。
常见的打开模式包括:- "r":只读模式,打开已存在的文件进行读取。
- "w":写入模式,打开文件进行写入,若文件不存在则创建新文件,若文件存在则清空原内容。
- "a":添加模式,打开文件进行写入,若文件不存在则创建新文件,若文件存在则在文件末尾添加内容。
- "b":二进制模式,与上述模式结合使用,表示以二进制格式进行文件的读写。
2. 文件内容的读取与写入通过`fread()`函数可以从文件中读取数据,通过`fwrite()`函数可以向文件中写入数据。
这两个函数的使用方式如下:```csize_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);```其中,`ptr`为数据读写的缓冲区地址,`size`为每个数据项的字节数,`nmemb`为数据项的个数,`stream`为待读写数据的文件。
c语言io详解
c语言io详解C语言中的I/O(输入/输出)操作是与程序外部世界进行数据交换的关键部分。
C标准库提供了一组函数来执行不同类型的I/O操作。
以下是一些常见的C语言I/O函数,以及它们的基本用法:标准输入输出函数:1. printf():-用于输出格式化的数据到标准输出(通常是屏幕)。
-例子:```cint num = 10;printf("The value of num is %d\n", num);```2. scanf():-用于从标准输入中读取格式化的数据。
-例子:```cint num;printf("Enter a number: ");scanf("%d", &num);```文件I/O函数:3. fopen():-用于打开一个文件,并返回一个文件指针。
-例子:```cFILE *file = fopen("example.txt", "r");```4. fclose():-用于关闭一个打开的文件。
-例子:```cfclose(file);```5. fread() 和fwrite():-用于从文件读取数据和向文件写入数据。
-例子:```cfread(buffer, sizeof(char), 100, file);fwrite(buffer, sizeof(char), 100, newFile);```6. fprintf() 和fscanf():-类似于printf() 和scanf(),但是操作的是文件。
-例子:```cfprintf(file, "The value of num is %d\n", num);fscanf(file, "%d", &num);```7. fgets() 和fputs():-用于逐行读取和写入字符串。
C语言IO操作
标准输⼊流0STDIN_FILENO stdin 标准输出流1STDOUT_FILENO stdout 标准错误流2STDERR_FILENO stderr C语⾔IO操作⽂件的概念和类型 概念:⼀组相关数据的有序集合 ⽂件类型:1. 常规⽂件 r2. ⽬录⽂件 d3. 字符设备⽂件 c4. 块设备⽂件 b5. 管道⽂件 p, 进程间通信的机制6. 套接字⽂件 s, 进程间通信的机制7. 符号链接⽂件 l如何理解标准IO 标准IO由ANSIC标准定义,就是⽤标准C语⾔定义好的⼀组⽤来输⼊和输出的API 主流操作系统(Linux,Windows)上都实现了C库 标准IO通过缓冲机制减少系统调⽤,实现更⾼的效率流(FILE)的含义 标准IO⽤⼀个结构体数据类型来存放打开的⽂件的相关信息 标准IO的所有操作都围绕FILE来进⾏ FILE⼜被称为流(stream) 流分为两种流分别是 ⽂本流:Windows系统中⽂本流的换⾏符占⽤两个字节⽤“\r\n”表⽰,LInux中⽤‘\n’表⽰ ⼆进制流:Windows系统⼆进制流的换⾏符占⽤⼀个字节⽤“\n”表⽰,LInux中⽤‘\n’表⽰流的缓冲 全缓冲:当流的缓冲区⽆数据或⽆空间时才执⾏实际IO操作 ⾏缓冲:当在输⼊和输出中遇到换⾏符“\n”时,进⾏IO操作;当流和⼀个终端关联时,是典型的⾏缓冲 ⽆缓冲:数据直接写⼊⽂件,流不进⾏缓冲,⼀般在打印错误信息时使⽤ 标准IO预定义3个流,程序运⾏时⾃动打开流的打开 下列函数可⽤于打开⼀个标准IO流 FILE *fopen(const char *path, const char *modle); 成功时返回流指针;出错时返回NULL model参数模式描述r或rb打开⼀个已有的⽂本⽂件,允许读取⽂件。
w或wb 打开⼀个⽂本⽂件,允许写⼊⽂件。
如果⽂件不存在,则会创建⼀个新⽂件。
在这⾥,您的程序会从⽂件的开头写⼊内容。
编程语言中的文件处理与IO操作技巧
编程语言中的文件处理与IO操作技巧在编程语言中,文件处理与IO操作技巧是非常重要的部分。
无论是读取文件内容、写入文件,还是操作文件的各种操作,都需要掌握一些技巧和方法,以实现代码的高效运行和数据的准确处理。
本文将介绍几种常见的文件处理与IO操作技巧,帮助读者更好地理解和运用它们。
一、文件读取与写入在编程中,读取和写入文件是最常见的操作之一。
文件的读取可以帮助我们获取文件中的内容,而文件的写入则是将数据写入到文件中。
下面介绍几种常用的文件读取和写入的方法。
1.1 文件读取文件读取通过打开文件、读取文件内容和关闭文件三个步骤完成。
具体步骤如下:Step 1:打开文件在开始读取文件之前,需要先打开文件。
这可以通过编程语言提供的open()函数或类似的方法实现,具体用法各不相同。
打开文件的语法一般为open(文件名, 打开模式),其中文件名是需要读取的文件的路径,打开模式可以是只读模式、写入模式等。
Step 2:读取文件内容一旦文件被成功打开,就可以读取文件的内容了。
这可以通过编程语言提供的read()函数或类似的方法实现。
读取的内容可以保存到变量中以供后续使用。
Step 3:关闭文件文件读取完毕后,需要关闭文件。
关闭文件的操作可以通过编程语言提供的close()函数或类似的方法实现。
关闭文件可以释放系统资源,同时确保文件操作的完整性。
1.2 文件写入文件写入与文件读取类似,同样需要打开文件、写入文件内容和关闭文件三个步骤。
具体步骤如下:Step 1:打开文件与文件读取相同,文件写入也需要先打开文件。
打开文件的语法同样是open(文件名, 打开模式),文件名为需要写入的文件的路径,打开模式可以是只写模式、追加模式等。
Step 2:写入文件内容一旦文件被成功打开,可以向文件中写入内容了。
这可以通过编程语言提供的write()函数或类似的方法实现。
需要注意的是,写入的内容可以是字符串、数字等任何类型的数据。
Csharp文件操作集锦
Csharp文件操作集锦C#文件操作集锦:追加、复制、删除与文件夹操作C#文件操作:C#追加文件1.StreamWriter sw = File.AppendText(2.Server.MapPath(".")+"\\myText.txt");3.sw.WriteLine("追逐理想");4.sw.WriteLine("kzlll");5.sw.WriteLine(".NET笔记");6.sw.Flush();7.sw.Close();C#文件操作:C#拷贝文件1.string OrignFile,NewFile;2.OrignFile = Server.MapPath(3.".")+"\\myText.txt";4.NewFile = Server.MapPath(5.".")+"\\myTextCopy.txt";6.File.Copy(OrignFile,NewFile,true);C#文件操作:C#删除文件1.string delFile = Server.MapPath(2.".")+"\\myTextCopy.txt";3.File.Delete(delFile);C#文件操作:C#移动文件1.string OrignFile,NewFile;2.OrignFile = Server.MapPath(3.".")+"\\myText.txt";4.NewFile = Server.MapPath(5.".")+"\\myTextCopy.txt";6.File.Move(OrignFile,NewFile);C#文件操作:C#创建目录1.// 创建目录c:\sixAge2.DirectoryInfo d=3.Directory.CreateDirectory("c:\\sixAge");4.// d1指向c:\sixAge\sixAge15.DirectoryInfo d1=6. d.CreateSubdirectory("sixAge1");7.// d2指向c:\sixAge\sixAge1\sixAge1_18.DirectoryInfo d2=9.d1.CreateSubdirectory("sixAge1_1");10.// 将当前目录设为c:\sixAge11.Directory.SetCurrentDirectory("12.c:\\sixAge");13.// 创建目录c:\sixAge\sixAge214.Directory.CreateDirectory("15.sixAge2");16.// 创建目录c:\sixAge\sixAge2\sixAge2_117.Directory.CreateDirectory("18.sixAge2\\sixAge2_1");递归删除文件夹及文件1.〈%@PageLanguage=C#%〉2.〈%@Importnamespace="System.IO"%〉3.〈Scriptrunat=server〉4.publicvoidDeleteFolder(stringdir)5.{6.if(Directory.Exists(dir))//如果7.存在这个文件夹删除之8.{9.foreach(stringdinDirectory.10.GetFileSystemEntries(dir))11.{12.if(File.Exists(d))13.File.Delete(d);//直接删除其中的文件14.else15.DeleteFolder(d);//递归删除子文件夹16.}17.Directory.Delete(dir);//删除已空文件夹18.Response.Write(dir+"文件夹删除成功");19.}20.else21.Response.Write(dir+"该文件夹不存在");//如果22.文件夹不存在则提示23.}24.protectedvoidPage_Load(Object25.sender,EventArgse)26.{27.stringDir="D:\\gbook\\11";28.DeleteFolder(Dir);//调用函数删除文件夹29.}30.31.32.//=================================== =====33.//实现一个静态方法将指定文件夹下面的34.所有内容copy到目标文件夹下面35.//如果目标文件夹为只读属性就会报错。
npoi 使用手册
npoi 使用手册一、简介Npoi是一款广泛使用的库,主要用于处理MicrosoftOffice文档,如Excel和Word。
它提供了丰富的功能和接口,方便开发者对Office文档进行各种操作。
本手册旨在帮助用户了解和使用Npoi库。
二、安装与引用要使用Npoi库,首先需要在项目中安装相关的NuGet包。
可以通过VisualStudio的NuGet包管理器来安装。
安装完成后,可以通过项目引用Npoi库,以便在代码中使用其功能。
三、基本用法1.读取Excel文档:使用Npoi的Excel读取功能,可以方便地打开Excel文档并获取其中的数据。
以下是一个简单的示例代码:```csharpusingNpoi.Excel;usingSystem.IO;//打开Excel文档varworkbook=newExcelWorkbook(File.Open("example.xlsx"));//获取第一个工作表数据varworksheet=workbook.Worksheets[0];vardata=worksheet.Rows.Count>0?worksheet.Cells[0,0].ToStr ing():null;```2.写入Excel文档:使用Npoi的Excel写入功能,可以方便地将数据写入Excel文档。
以下是一个简单的示例代码:```csharpusingNpoi.Excel;usingSystem.IO;//创建新的Excel文档varworkbook=newExcelWorkbook();varworksheet=workbook.CreateWorksheet("Sheet1");//写入数据到第一行第一列worksheet.Cells[0,0].Value="Hello,World!";//保存Excel文档File.WriteAllText("example.xlsx",workbook.ToString());```3.处理Word文档:使用Npoi的Word处理功能,可以方便地打开和操作Word文档。
C_Sharp_2005简单操作例子
C# 2005 简单操作小例子一、新建应用程序项目1、打开VS 2005后,文件》新建》项目》Visual C#》Windows应用程序,如下图所示。
例如:名称:WinApp_CX;2、建立一个工具菜单,在“工具栏”选“MenuStrip”点击一下Form1,依据需要建立菜单名称。
如下图。
3、菜单命名。
如“退出(E)”菜单,默认“退出EToolStripMenuItem”,我们进行重新命名,“Exit_ToolStripMenuItem”4、退出程序事件代码:在关闭程序时,提示信息,让用户确认是否退出程序。
我们在FromClosing 事件已经使用确认动作,因此,在“退出”菜单中的代码就不需再次使用确认,如果使用的话也可,只是经过两确认。
详细代码:private void Exit_ToolStripMenuItem_Click(object sender, EventArgs e){ // 退出程序// if (DialogResult.OK == MessageBox.Show("你确定要关闭应用程序吗?", "关闭提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)){Application.Exit();}}private void Form1_FormClosing(object sender, FormClosingEventArgs e){ // 退出程序// if (DialogResult.OK == MessageBox.Show("你确定要关闭应用程序吗?", "关闭提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question))if(MessageBox.Show("是否要退出本系统?", "关闭提示", MessageBoxButtons.YesNo, rmation) == DialogResult.Yes){Application.Exit();}}。
C语言文件操作和IO教程
C语言文件操作和IO教程章节一:C语言文件操作基础C语言中的文件操作是程序与外部文件之间进行数据交流的重要方式。
在进行文件操作之前,我们需要包含头文件 "stdio.h",该头文件中包含了进行文件操作所需的函数和定义。
1.1 文件基本概念文件是存储在存储介质上的一组数据。
在C语言中,文件可以分为文本文件和二进制文件两种类型。
文本文件以可读的ASCII 字符形式存储数据,而二进制文件以字节流形式存储数据。
1.2 文件指针在C语言中,文件指针用于对文件进行操作。
它是一个指向FILE结构体的指针,每个打开的文件都有一个相关的文件指针。
我们可以通过使用标准库函数fopen来打开一个文件,并获取该文件的指针。
1.3 文件的打开和关闭操作文件的打开通过调用fopen函数来实现,其原型为:FILE *fopen(const char *filename, const char *mode);其中filename为文件名,mode为打开方式,如"r"代表只读,"w"代表写,"a"代表追加等。
文件打开成功后,函数返回一个指向该文件的指针;否则返回NULL。
文件的关闭操作使用fclose函数,其原型为:int fclose(FILE *stream);其中stream为要关闭的文件指针。
关闭文件后,相关的文件资源将被释放。
1.4 文件读写操作1.4.1 单个字符的读写为了从文件中读取或写入一个字符,我们可以使用fgetc和fputc函数。
fgetc函数原型为:int fgetc(FILE *stream);其中stream为要读取的文件指针。
该函数返回读取到的字符,若读取失败则返回EOF。
fputc函数原型为:int fputc(int character, FILE *stream);其中character为要写入的字符,stream为要写入的文件指针。
c语言IO操作
C语言把文件看做一个字节序列,即由一连串的字节组成,称为“流Stream”,以字节为单位访问,没有记录的界限。
文件分类:一,按文件所依附的介质来分:磁盘文件,磁带文件,内存文件,设备文件。
二,按内容区分:源程序文件,目标文件,数据文件。
三,按操作系统对磁盘文件的读写方式:缓冲文件系统和非缓冲文件系统。
缓冲文件系统:操作系统在内存中为每一个正在使用的文件开辟一个读写缓冲区。
四,按文件的数据组织形式:ANSII码文件与二进制文件ANSII文件:又叫文本文件,每一个字节存放一个ANSII代码,代表一个字符。
用ANSII 码形式输出与字符一一对应,一个字节代表一个字符,因而便于对字符进行逐个处理,也便于输出字符。
但一般占存储空间教多,而且要花费转换时间(二进制与ANSII间的转换)。
二进制文件:把文件中的数据按其在内存中的存储形式原样输出到磁磁盘上存放。
优点:占用存储空间少,文件形式和内存形式一致,不需要转换,因而处理起来速度快。
文件类型指针:要调用一个文件,必须知道与该文件有关的信息,比如文件名,文件状态,文件当前的读写位置,与该文件对应的内存缓冲区地址,缓冲区未被处理的字符串,文件操作方式等信息,这些信息保存在一个结构体变量中,该结构体是由系统定义的,取名为FILE。
typedef struct{short level; //缓冲区…满‟或…空‟的程度unsigned flags; //文件状态标志char fd; //文件描述符文件号unsigned char hold; //如无缓冲区域不读取字符short bsize; //缓冲区大小unsigned char *buffer; //数据缓冲区位置unsigned char *curp; //指针,当前的指向unsigned istemp; //该文件是否为临时文件short token; //用于有效性检查}FILE;在对一个文件进行处理时,需先定义一个FILE类型的指针,即建立一个FILE类型的指针变量,该指针变量用于指向系统内存中的一个FILE类型的结构体(即文件信息区)。
Csharp数据库操作大全
inti=0; strings1="",s2=""; i=Convert.ToInt16(textBox1.Text); s1=textBox2.Text; s2=textBox3.Text; SqlConnectionobjSqlConnection=newSqlConnection("server=127.0.0.1;uid=sa;pwd=;database=test"); objSqlConnection.Open(); MessageBox.Show("数据库连接成功","好"); try { SqlCommandsqlcom=newSqlCommand("insertintoinfo(id,name,sex)values("+i+",'"+s1+"','"+s2+"')",objSqlConnection); sqlcom.ExecuteNonQuery(); MessageBox.Show("添加成功!","啊"); } catch(Exceptiona) { MessageBox.Show(a.ToString()); } MessageBox.Show("添加成功!","啊"); } 三:数据库的修改代码:
1.类开始:
DataTabledt1=newDataTable(); SqlDataAdapterda1=newSqlDataAdapter(); 2.按钮代码:
inti=0,n=0; strings1="",s2=""; s1=textBox2.Text; s2=textBox3.Text; if(textBox1.Text.Length==0) i=0; else i=Convert.ToInt32(textBox1.Text); SqlConnectionobjSqlConnection=newSqlConnection("server=127.0.0.1;uid=sa;pwd=;database=test"); objSqlConnection.Open(); MessageBox.Show("数据库连接成功","好"); stringquery="SELECT*frominfowhereid="+i; DataSetobjDataSet=newDataSet(); SqlDataAdapterobj=newSqlDataAdapter(); obj.SelectCommand=newSqlCommand(query,objSqlConnection); obj.Fill(objDataSet,"info"); SqlCommandobjSqlCommand=newSqlCommand(query,objSqlConnection); SqlDataReaderobjSqlReader=objSqlCommand.ExecuteReader(); while(objSqlReader.Read()) { n+=1; MessageBox.Show("编号:"+objSqlReader.Getvalue(0)+"姓名:"+objSqlReader.Getvalue(1)+"性别"+objSqlReader.Getvalue(2)); } if(n==0) MessageBox.Show("数据库中没有这样的记录!"); 六:C#数据库查询代码:
C语言中的IO操作
C语言中的IO操作在计算机编程领域中,输入输出(Input/Output,简称IO)操作是非常重要的一部分。
在C语言中,IO操作提供了一种机制,使程序能够与外部设备进行数据交互。
本文将针对C语言中的IO操作进行详细探讨。
1. 标准输入输出(stdio.h)标准输入输出是C语言中最基本的IO操作,使用stdio.h头文件中的函数实现。
其中,最常用的函数包括printf、scanf、getchar和putchar。
1.1 printf函数printf函数用于将数据输出到标准输出设备(通常是显示器)。
它具有灵活的格式化输出功能,可以输出不同类型的数据,如字符串、整数、浮点数等。
下面是一个示例:```c#include <stdio.h>int main() {int num = 10;printf("The number is %d\n", num);return 0;}1.2 scanf函数scanf函数用于从标准输入设备(通常是键盘)读取数据。
它与printf函数相对应,可以按照指定的格式读取不同类型的数据。
下面是一个示例:```c#include <stdio.h>int main() {int num;printf("Please enter a number: ");scanf("%d", &num);printf("You entered: %d\n", num);return 0;}```1.3 getchar和putchar函数getchar函数用于从标准输入设备(通常是键盘)读取一个字符,putchar函数用于将一个字符输出到标准输出设备(通常是显示器)。
下面是一个示例:#include <stdio.h>int main() {char ch;printf("Please enter a character: ");ch = getchar();printf("You entered: ");putchar(ch);return 0;}```2. 文件IO操作(stdio.h)除了与标准输入输出相关的函数,C语言还提供了文件IO操作的函数,使程序可以读写文件。
C语言文件操作与IO流管理
C语言文件操作与IO流管理在C语言中,文件操作和IO流管理是非常重要的概念。
通过文件操作,我们可以进行文件的创建、打开、读写和关闭等操作,而IO流管理则是指对文件进行输入和输出流的管理。
本文将详细介绍C语言中的文件操作和IO流管理的相关知识。
一、文件操作文件操作是指对文件的创建、打开、读写和关闭等操作过程。
下面将依次介绍这些操作的具体步骤和函数。
1. 文件的创建在C语言中,可以通过调用fopen函数来创建文件。
具体步骤如下:a. 使用fopen函数创建文件指针,并指定文件路径和打开方式。
例如,要创建一个名为“example.txt”的文件,并以写入方式打开,可以使用以下代码:FILE* fp = fopen("example.txt", "w");b. 判断文件是否创建成功。
如果文件创建成功,fp的值将不为NULL;否则,文件创建失败。
2. 文件的打开一个已经存在的文件可以通过调用fopen函数来打开。
具体步骤如下:a. 使用fopen函数创建文件指针,并指定文件路径和打开方式。
例如,要打开一个名为“example.txt”的文件,并以读取方式打开,可以使用以下代码:FILE* fp = fopen("example.txt", "r");b. 判断文件是否打开成功。
如果文件打开成功,fp的值将不为NULL;否则,文件打开失败。
3. 文件的读写在C语言中,可以通过调用fread和fwrite函数来进行文件的读写操作。
具体步骤如下:a. 使用fread函数从文件中读取数据。
例如,要从文件中读取10个整数,并存储在一个整型数组中,可以使用以下代码: int num[10];fread(num, sizeof(int), 10, fp);b. 使用fwrite函数向文件中写入数据。
例如,要将一个整型数组中的10个整数写入到文件中,可以使用以下代码:int num[10];fwrite(num, sizeof(int), 10, fp);4. 文件的关闭当文件不再使用时,应该及时关闭文件,以释放系统资源。
csharp 控制台 参数
csharp 控制台参数C#控制台:快速入门指南引言:C#是一种通用型、面向对象的编程语言,是微软的.NET平台的一部分。
C#可以用于开发各种类型的应用程序,包括控制台应用程序。
本文将介绍如何使用C#控制台来创建和运行一个简单的应用程序。
一、什么是C#控制台应用程序?C#控制台应用程序是一种基于文本界面的应用程序,它没有图形用户界面(GUI),只能通过命令行与用户进行交互。
控制台应用程序可以用于执行各种任务,例如处理数据、执行算法、生成报告等。
二、创建一个C#控制台应用程序1. 打开Visual Studio开发环境,选择“创建新项目”。
2. 在“新建项目”对话框中,选择“控制台应用程序”模板,并为项目命名。
3. 点击“确定”按钮,Visual Studio将自动生成一个控制台应用程序的初始代码。
三、控制台应用程序的结构一个典型的C#控制台应用程序由以下部分组成:1. 引用:用于引入其他类库或命名空间,以便在程序中使用外部功能。
2. 命名空间:用于组织和管理代码,避免命名冲突。
3. 类:包含了程序的逻辑和功能代码。
4. Main方法:是控制台应用程序的入口点,程序从这里开始执行。
四、编写第一个控制台应用程序下面是一个简单的示例,展示了如何在控制台中输出一条欢迎信息:```csharpusing System;namespace MyConsoleApp{class Program{static void Main(string[] args){Console.WriteLine("欢迎使用C#控制台应用程序!");Console.ReadKey();}}}```以上代码中,我们使用了Console.WriteLine方法来输出一条文本信息,然后使用Console.ReadKey方法来等待用户按下任意键,以保持控制台窗口的打开状态。
五、控制台应用程序的常用功能除了输出文本信息外,C#控制台应用程序还可以执行很多其他功能,例如:1. 接收用户输入:使用Console.ReadLine方法可以读取用户在控制台中输入的文本。
hprose-csharp(C#)版说明文档
基于Csharp的串口通信上位机和下位机源程序
基于单片机串口通信的上位机和下位机实践串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
首先亮出C#的源程序吧。
主要界面:只是作为简单的运用,可以扩展的。
源代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO.Ports;using System.Timers;namespace 单片机功能控制{public partial class Form1 : Form{public Form1(){InitializeComponent();}SerialPort sp = new SerialPort();private void button1_Click(object sender, EventArgs e){String str1 = comboBox1.Text;//串口号String str2 = comboBox2.Text;//波特率String str3 = comboBox3.Text;//校验位String str4 = comboBox5.Text;//停止位String str5 = comboBox4.Text;//数据位Int32 int2 = Convert.ToInt32(str2);//将字符串转为整型Int32 int5 = Convert.ToInt32(str5);//将字符串转为整型groupBox3.Enabled = true;//LED控制界面变可选try{if (button1.Text == "打开串口"){if (str1 == null){MessageBox.Show("请先选择串口!", "Error");return;}sp.Close();sp = new SerialPort();sp.PortName = comboBox1.Text;//串口编号sp.BaudRate = int2;//波特率switch (str4)//停止位{case "1":sp.StopBits = StopBits.One;break;case "1.5":sp.StopBits = StopBits.OnePointFive;break;case "2":sp.StopBits = StopBits.Two;break;default:MessageBox.Show("Error:参数不正确", "Error");break;}switch (str3){case "NONE":sp.Parity = Parity.None; break;case "ODD":sp.Parity = Parity.Odd; break;case "EVEN":sp.Parity = Parity.Even; break;default:MessageBox.Show("Error:参数不正确", "Error");break;}sp.DataBits = int5;//数据位sp.Parity = Parity.Even;//设置串口属性sp.Open();//打开串口button1.Text = "关闭串口";textBox1.Text = Convert.ToString(sp.PortName) + "已开启!";}else{sp.Close();button1.Text = "打开串口";groupBox3.Enabled = false;//LED控制界面变灰色textBox1.Text = Convert.ToString(sp.PortName) + "已关闭!";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void Form1_Load(object sender, EventArgs e){//初始化textBox1.Text = "欢迎使用简易的串口助手!";groupBox3.Enabled = false;//LED控制界面变灰色groupBox6.Enabled = false;groupBox7.Enabled = false;groupBox8.Enabled = false;button3.Enabled = false;button6.Enabled = false;timer1.Start();try{foreach (string com in System.IO.Ports.SerialPort.GetPortNames()) //自动获取串行口名称boBox1.Items.Add(com);//默认设置comboBox1.SelectedIndex = 0;//选择第一个com口comboBox2.SelectedIndex = 4;//波特率4800comboBox3.SelectedIndex = 0;//校验位NONEcomboBox4.SelectedIndex = 0;//停止位为1comboBox5.SelectedIndex = 0;//数据位为8}catch{MessageBox.Show("找不到通讯端口!", "串口调试助手");}}private void timer1_Tick(object sender, EventArgs e){label6.Text = DateTime.Now.ToString();}private void button2_Click(object sender, EventArgs e){try {if (button2.Text == "开启"){groupBox6.Enabled = true;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;checkBox1.Checked = false;checkBox2.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;button3.Enabled = true;textBox2.Text = String.Empty;button2.Text = "关闭";}else{groupBox6.Enabled = false;button3.Enabled = false;button2.Text = "开启";textBox2.Text = String.Empty;}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void button3_Click(object sender, EventArgs e){groupBox6.Enabled = true;label7.Text = "已发送";if (textBox2.Text == "")MessageBox.Show("发送失败,请选择发送的数据!");elsesp.WriteLine(textBox2.Text);//往串口写数据}private void checkBox1_CheckedChanged(object sender, EventArgs e) {try {if (checkBox1.Checked){checkBox1.Checked = true;checkBox2.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;label7.Text = "准备发送";textBox2.Text = "1";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox2_CheckedChanged(object sender, EventArgs e) {try {if (checkBox2.Checked){checkBox1.Checked = false;checkBox2.Checked = true;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;label7.Text = "准备发送";textBox2.Text = "2";radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox3_CheckedChanged(object sender, EventArgs e) {try{if (checkBox3.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = true;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "3";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox4_CheckedChanged(object sender, EventArgs e) {try{if (checkBox4.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = true;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "4";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox5_CheckedChanged(object sender, EventArgs e) {try{if (checkBox5.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = true;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "5";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox6_CheckedChanged(object sender, EventArgs e) {try{if (checkBox6.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = true;checkBox7.Checked = false;checkBox8.Checked = false;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "6";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox7_CheckedChanged(object sender, EventArgs e) {try{if (checkBox7.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = true;checkBox8.Checked = false;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "7";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void checkBox8_CheckedChanged(object sender, EventArgs e) {try{if (checkBox8.Checked){checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = true;radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;label7.Text = "准备发送";textBox2.Text = "8";}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void button5_Click(object sender, EventArgs e){try{if (button5.Text == "开启"){radioButton1.Checked = false;radioButton2.Checked = false;radioButton3.Checked = false;radioButton4.Checked = false;checkBox1.Checked = false;checkBox2.Checked = false;checkBox3.Checked = false;checkBox4.Checked = false;checkBox5.Checked = false;checkBox6.Checked = false;checkBox7.Checked = false;checkBox8.Checked = false;groupBox7.Enabled = true;button6.Enabled = true;textBox2.Text = String.Empty;button5.Text = "关闭";}else{groupBox7.Enabled = false;button6.Enabled = false;button5.Text = "开启";textBox2.Text = String.Empty;}}catch (Exception er){MessageBox.Show("Error:" + er.Message, "Error");return;}}private void button6_Click(object sender, EventArgs e){label7.Text = "已发送";if (textBox2.Text == "")MessageBox.Show("发送失败。
第05章C基本IO操作
第05章C基本IO操作
1介绍
C语言的基本I/O操作主要涉及文件系统、控制台等I/O设备,用C 语言操纵I/O设备,从而为程序提供有效输入和有用输出。
基本I/O操作使用C语言标准库提供的函数完成,本文主要介绍C语言中基本的I/O操作。
2准备工作
为了使用I/O函数,需要在程序中包含标准I/O库头文件
```c
#include <stdio.h>
```
实际开发中,还需要根据程序功能引入其它标准库头文件,比如
```c
#include <stdlib.h>
```
3输入输出
C中的标准I/O提供了一组函数对I/O设备的操作,可以认为I/O设备都有一个由字符组成的流,可以使用C语言编写的程序从流中获取输入并将输出写入流中。
3.1控制台I/O
C语言中专门编写函数来实现一些基本的控制台I/O操作,如getchar(、putchar(、printf(和scanf(函数:
1)getchar(函数
getchar(用于从键盘读取一个字符,读取的字符由返回值返回,如果没有按下任何键,则返回 EOF (-1)。
2)putchar(函数
putchar(用于将一个字符写入控制台,它接受一个字符,将其写入屏幕,返回值为写入的字符。
3)printf(函数
printf(函数用于将字符串或格式化输出到屏幕上,printf函数接受一个可变参数列表,可以是任何类型的数据,返回值为写入字符的数目。
4)scanf(函数
scanf(函数用于从键盘读取变量的值。
第5章文件IO操作
第5章文件IO操作在计算机编程中,文件I/O操作是指对计算机文件进行读写的过程。
文件I/O操作是编程语言中常见的操作之一,它允许程序从文件中读取数据或将数据写入文件中。
本章将介绍文件I/O操作的基本概念、读取和写入文件的方法,以及一些常见的文件处理技巧。
1.文件I/O操作概述文件I/O操作是一种将数据从计算机的内存读取到硬盘或从硬盘写入到内存的过程。
在计算机中,数据通常存储在文件中,而文件I/O操作则是实现数据在内存和硬盘之间传输的机制。
2.文件的打开和关闭在进行文件I/O操作之前,需要先打开文件。
文件的打开可以通过编程语言提供的函数或方法来完成,通常需要指定文件名和打开模式。
打开模式可以是只读、只写、读写、追加等。
打开文件后,就可以进行文件读写操作。
文件读写完成后,需要及时关闭文件。
关闭文件可以通过编程语言提供的函数或方法来完成。
关闭文件可以释放文件占用的资源,确保数据的完整性。
3.文件的读取文件的读取是指从已打开的文件中读取数据到内存中。
文件读取可以按照字节、字符或行进行。
常见的文件读取方法有以下几种:(1) 逐字符读取:逐字符读取文件可以通过循环读取每个字符来实现。
通常可以使用编程语言提供的getc(函数或getline(函数来实现。
(2) 逐行读取:逐行读取文件可以通过循环读取每一行来实现。
通常可以使用编程语言提供的fgets(函数或readline(函数来实现。
(3) 二进制读取:二进制读取文件可以将文件中的数据按二进制方式读取。
通常可以使用编程语言提供的fread(函数来实现。
4.文件的写入文件的写入是指将内存中的数据写入到已打开的文件中。
文件写入操作可以按照字节、字符或行进行。
常见的文件写入方法有以下几种:(1) 逐字节写入:逐字节写入文件可以通过循环将每个字符写入到文件中来实现。
通常可以使用编程语言提供的putc(函数来实现。
(2) 逐行写入:逐行写入文件可以通过循环将每一行数据写入到文件中来实现。
IO设备的使用方法说明
IO设备的使用方法说明IO设备是输入/输出设备的缩写,包括键盘、鼠标、打印机、扫描仪、摄像头等各种外围设备。
以下是一些常见IO设备的使用方法说明:1. 键盘:- 将键盘连接至计算机的USB接口或PS/2接口。
- 打开需要输入文字的程序或文件。
- 在程序或文件中点击需要输入文字的位置,开始使用键盘输入文字。
2. 鼠标:- 将鼠标连接至计算机的USB接口。
- 移动鼠标可以控制屏幕上的光标。
- 点击鼠标左键可以选择、打开或执行某个项目,点击右键可以打开选项菜单。
3. 打印机:- 将打印机连接至计算机的USB接口。
- 打开需要打印的文件或图片。
- 在打印选项中选择合适的打印机和打印设置,然后点击打印按钮完成打印。
4. 扫描仪:- 将扫描仪连接至计算机的USB接口。
- 打开扫描软件,在软件中选择扫描设置和扫描目标。
- 完成设置后点击扫描按钮进行扫描,扫描好的文件会保存在指定的位置。
5. 摄像头:- 将摄像头连接至计算机的USB接口。
- 打开需要使用摄像头的软件,如视频通话软件、摄像头软件等。
- 在软件中启动摄像头,即可进行视频拍摄或视频通话。
以上是一些常见IO设备的使用方法说明,不同的IO设备具体使用方法可能会有所不同。
用户在使用IO设备时应根据具体的使用说明进行操作。
由于科技的发展,IO设备在我们的日常生活中扮演着至关重要的角色。
它们让我们能够与计算机和其他设备进行交互,从而完成各种任务和活动。
除了上述的常见IO设备,还有许多其他类型的IO设备,如音频设备、视频设备、网络设备等。
下面将继续介绍几种常见的IO设备以及它们的使用方法。
6. 音频设备:- 喇叭/耳机:将喇叭或耳机插入计算机或其他音频设备的音频接口。
- 打开需要播放音频的程序或文件。
- 调节音频设备的音量,即可进行音频播放。
7. 视频设备:- 显示器:将显示器连接至计算机的VGA/HDMI接口。
- 打开电脑,即可自动显示屏幕上的内容。
- 如果需要进行调整,可根据显示器的菜单进行设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、建立一个文本文件public class FileClass{public static void Main(){WriteToFile();}static void WriteToFile(){StreamWriter SW;SW = File.CreateText(@"c:MyTextFile.txt");SW.WriteLine("God is greatest of them all");SW.WriteLine("This is second line");SW.Close();Console.WriteLine("File Created SucacessFully");}}2、读文件public class FileClass{public static void Main(){ReadFromFile(@"c:MyTextFile.txt");}static void ReadFromFile(string filename){StreamReader SR;string S;SR = File.OpenText(filename);S = SR.ReadLine();while (S != null){Console.WriteLine(S);S = SR.ReadLine();}SR.Close();}}public class FileClass{public static void Main(){AppendToFile();}static void AppendToFile(){StreamWriter SW;SW = File.AppendText(@"C:MyTextFile.txt");SW.WriteLine("This Line Is Appended");SW.Close();Console.WriteLine("Text Appended Successfully");}}3、追加操作C#追加文件StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw.WriteLine("追逐理想");sw.WriteLine("kzlll");sw.WriteLine(".NET笔记");sw.Flush();sw.Close();C#拷贝文件string OrignFile,NewFile;OrignFile = Server.MapPath(".")+"\\myText.txt";NewFile = Server.MapPath(".")+"\\myTextCopy.txt";File.Copy(OrignFile,NewFile,true);C#删除文件string delFile = Server.MapPath(".")+"\\myTextCopy.txt";File.Delete(delFile);C#移动文件string OrignFile,NewFile;OrignFile = Server.MapPath(".")+"\\myText.txt";NewFile = Server.MapPath(".")+"\\myTextCopy.txt";File.Move(OrignFile,NewFile);C#创建目录// 创建目录c:\sixAgeDirectoryInfo d=Directory.CreateDirectory("c:\\sixAge");// d1指向c:\sixAge\sixAge1DirectoryInfo d1=d.CreateSubdirectory("sixAge1");// d2指向c:\sixAge\sixAge1\sixAge1_1DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1");// 将当前目录设为c:\sixAgeDirectory.SetCurrentDirectory("c:\\sixAge");// 创建目录c:\sixAge\sixAge2Directory.CreateDirectory("sixAge2");// 创建目录c:\sixAge\sixAge2\sixAge2_1Directory.CreateDirectory("sixAge2\\sixAge2_1");递归删除文件夹及文件<%@ Page Language=C#%><%@ Import namespace="System.IO"%><Script runat=server>public void DeleteFolder(string dir){if (Directory.Exists(dir)) //如果存在这个文件夹删除之{foreach(string d in Directory.GetFileSystemEntries(dir)) {if(File.Exists(d))File.Delete(d); //直接删除其中的文件elseDeleteFolder(d); //递归删除子文件夹}Directory.Delete(dir); //删除已空文件夹Response.Write(dir+" 文件夹删除成功");}elseResponse.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示}protected void Page_Load (Object sender ,EventArgs e){string Dir="D:\\gbook\\11";DeleteFolder(Dir); //调用函数删除文件夹}//================================================== ====// 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面// 如果目标文件夹为只读属性就会报错。
// April 18April2005 In STU//================================================== ====public static void CopyDir(string srcPath,string aimPath){try{// 检查目标目录是否以目录分割字符结束如果不是则添加之if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)aimPath += Path.DirectorySeparatorChar;// 判断目标目录是否存在如果不存在则新建之if(!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组// 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法// string[] fileList = Directory.GetFiles(srcPath);string[] fileList = Directory.GetFileSystemEntries(srcPath);// 遍历所有的文件和目录foreach(string file in fileList){// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件if(Directory.Exists(file))CopyDir(file,aimPath+Path.GetFileName(file));// 否则直接Copy文件elseFile.Copy(file,aimPath+Path.GetFileName(file),true);}}catch (Exception e){MessageBox.Show (e.ToString());}}//================================================== ====// 实现一个静态方法将指定文件夹下面的所有内容Detele// 测试的时候要小心操作,删除之后无法恢复。
// April 18April2005 In STU//================================================== ====public static void DeleteDir(string aimPath){try{// 检查目标目录是否以目录分割字符结束如果不是则添加之if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)aimPath += Path.DirectorySeparatorChar;// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组// 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法// string[] fileList = Directory.GetFiles(aimPath);string[] fileList = Directory.GetFileSystemEntries(aimPath);// 遍历所有的文件和目录foreach(string file in fileList){// 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件if(Directory.Exists(file)){DeleteDir(aimPath+Path.GetFileName(file));}// 否则直接Delete文件else{File.Delete (aimPath+Path.GetFileName(file));}}//删除文件夹System.IO .Directory .Delete (aimPath,true);}catch (Exception e){MessageBox.Show (e.ToString());}}需要引用命名空间:using System.IO;/**//// <summary>/// 拷贝文件夹(包括子文件夹)到指定文件夹下,源文件夹和目标文件夹均需绝对路径. 格式: CopyFolder(源文件夹,目标文件夹);/// </summary>/// <param name="strFromPath"></param>/// <param name="strToPath"></param>//--------------------------------------------------//作者:明天去要饭QQ:305725744//---------------------------------------------------public static void CopyFolder(string strFromPath,string strToPath){//如果源文件夹不存在,则创建if (!Directory.Exists(strFromPath)){Directory.CreateDirectory(strFromPath);}//取得要拷贝的文件夹名string strFolderName = strFromPath.Substring(stIndexOf("\\") + 1,strFromPath.Length - stIndexOf("\\") - 1);//如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹if (!Directory.Exists(strToPath + "\\" + strFolderName)){Directory.CreateDirectory(strToPath + "\\" + strFolderName);}//创建数组保存源文件夹下的文件名string[] strFiles = Directory.GetFiles(strFromPath);//循环拷贝文件for(int i = 0;i < strFiles.Length;i++){//取得拷贝的文件名,只取文件名,地址截掉。