您现在的位置是:首页 > 技术资料 > 第十九章文件操作
推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

第十九章文件操作

更新时间:2022-11-25 22:09:06 大小:2M 上传用户:huang07查看TA发布的资源 标签:文件操作 下载积分:9分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

文件打开与关闭操作 fopen():文件打开操作 头文件:stdio.h 函数定义:FILE *fopen(char *pname, char *mode) 函数说明:pname是文件名,mode是打开文件的方式 mode:"r" 打开一个已经存在的文件文本,文件不存在则出错 以“r+”的方式打开一个文件,会清空文件的原始内容,重新写入数据 返回值:正常返回:FILE *一个指向文件在内存中的文件信息去的开头 异常返回:NULL,表示打开操作不成功 打开文件的作用是: (1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量; (2)开辟一个缓冲区; (3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件; FILE *:指出fopen是一个返回文件类型的指针函数;  返回值    正常返回:被打开文件的文件指针。    异常返回:NULL,表示打开操作不成功。  要说明的是:C语言将计算机的输入输出设备都看作是文件。例如,键盘文件、屏幕文件等。ANSI C标准规定,在执行程序时系统先自动打开键盘、屏幕、错误三个文件。这三个文件的文件指针分别是:标准输入stdin、标准输出stdout和标准出错 stderr。 fclose():文件关闭 函数定义:int fclose(FILE *fp); 函数说明:fp是一个以打开的文件的文件指针 返回值: 正常返回:0 异常返回:EOF,表示文件在关闭时发生错误 fgetc:读取一个字符 函数定义:int fgetc(FILE *fp) 函数说明:从fp中读取一个字符,作为返回值返回 返回值: 正常返回:返回读取字符的代码 异常返回:返回EOF。例如:要从“写打开”的文件中读取一个字符时,会发生错误而返回一个EOF 【例8.1】显示指定文件的内容。 //程序名为:display.c //执行时可用:display filename1 形式的命令行运行。显示文件filename1中的内容。例如,执行命令行display display.c将在屏幕上显示display的原代码。 //File display program. #include void main(int argc,char *argv[]) //命令行参数 { int ch;//定义文件类型指针 FILE *fp;//判断命令行是否正确 if(argc!=2) { printf("Error format,Usage: display filename1\n"); return; //键入了错误的命令行,结束程序的执行 } //按读方式打开由argv[1]指出的文件 if((fp=fopen(argv[1],"r"))==NULL) { printf("The file <%s> can not be opened.\n",argv[1]);//打开操作不成功 return;//结束程序的执行 } //成功打开了argv[1]所指文件 ch=fgetc(fp); //从fp所指文件的当前指针位置读取一个字符 while(ch!=EOF) //判断刚读取的字符是否是文件结束符 { putchar(ch); //若不是结束符,将它输出到屏幕上显示 ch=fgetc(fp); //继续从fp所指文件中读取下一个字符 } //完成将fp所指文件的内容输出到屏幕上显示 fclose(fp); //关闭fp所指文件 } fputc:写一个字符到文件中 函数定义:int fputc(int ch, FILE*fp) 函数说明:ch是一个整型变量,要写到文件的字符 fp:文件指针,要写入的文件 返回值: 正常返回:要写入的字符的代码 异常返回:返回EOF 【例8.2】将一个文件的内容复制到另一个文件中去。 //程序名为:copyfile.c //执行时可用:copyfile filename1 filename2形式的命令行运行,将文件filename1中的内容复制到文件filename2中去。 //file copy program. #include void main(int argc,char *argv[]) //命令行参数 { int ch; FILE *in,*out; //定义in和out两个文件类型指针 if(argc!=3) //判断命令行是否正确 { printf("Error in format,Usage: copyfile filename1 filename2\n"); return; //命令行错,结束程序的执行 } //按读方式打开由argv[1]指出的文件 if((in=fopen(argv[1],"r"))==NULL) { printf("The file <%s> can not be opened.\n",argv[1]); return; //打开失败,结束程序的执行 } //成功打开了argv[1]所指文件,再 //按写方式打开由argv[2]指出的文件 if((out=fopen(argv[2],"w"))==NULL) { printf("The file %s can not be opened.\n",argv[2]); return; //打开失败,结束程序的执行 } //成功打开了argv[2]所指文件 ch=fgetc(in); //从in所指文件的当前指针位置读取一个字符 while(ch!=EOF) //判断刚读取的字符是否是文件结束符 { fputc(ch,out); //若不是结束符,将它写入out所指文件 ch=fgetc(in); //继续从in所指文件中读取下一个字符 } //完成将in所指文件的内容写入(复制)到out所指文件中 fclose(in); //关闭in所指文件 fclose(out); //关闭out所指文件 } 【例8.3】按十进制和字符显示文件代码,若遇不可示字符就用井号"#"字符代替之。 //程序名为:dumpf.c //执行时可用:dumpf filename1 形式的命令行运行。 // File dump program. #include void main(int argc,char *argv[]) { char str[9]; int ch,count,i; FILE *fp; if(argc!=2) { printf("Error format,Usage: dumpf filename\n"); return; } if((fp=fopen(argv[1],"r"))==NULL) { printf("The file %s can not be opened.\n",argv[1]); return; } count=0; do{ i=0; //按八进制输出第一列,作为一行八个字节的首地址 printf("%06o: ",count*8); do{ // 从打开的文件中读取一个字符 ch=fgetc(fp); // 按十进制方式输出这个字符的ASCII码 printf("%4d",ch); // 如果是不可示字符就用"#"字符代替 if(ch<' '||ch>'~') str[i]='#'; // 如果是可示字符,就将它存入数组str以便形成字符串 else str[i]=ch; // 保证每一行输出八个字符 if(++i==8) break; }while(ch!=EOF); // 遇到文件尾标志,结束读文件操作 str[i]='\0'; // 在数组str加字符串结束标志 for(;i<8;i++) printf(" "); // 一行不足八个字符用空格填充 printf(" %s\n",str); // 输出字符串 count++; // 准备输出下一行 }while(ch!=EOF); // 直到文件结束 fclose(fp); // 关闭fp所指文件 } fgets():从文件中读取一个字符串 函数定义:char *fgets(char *str, int n, FILE *fp) 函数说明:由fp指出的文件中读取n-1个字符,并把他们存放到有str指出的字符数组中区,最后加上一个由字符串结束符'\0' 参数说明:str:接受字符串的内存地址,可以是数组别名,也可以是指针 n:指出要读取的字符的个数

部分文件列表

文件名 大小
第19章_文件操作.pdf 2M

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载