谭浩强c语言word版13内容摘要:

被写入的文件可以用写、读写、追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。 如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。 被写入的文件若不存在,则创建该文件。 2) 每写入一个字符,文件内部 位置指针向后移动一个字节。 3) fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个 EOF。 可用此来判断写入是否成功。 【例 】从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。 include main() { FILE *fp。 char ch。 if((fp=fopen(d:\\jrzh\\example\\string,wt+))==NULL) { printf(Cannot open file strike any key exit!)。 getch()。 exit(1)。 } printf(input a string:\n)。 ch=getchar()。 while (ch!=39。 \n39。 ) { fputc(ch,fp)。 ch=getchar()。 } rewind(fp)。 ch=fgetc(fp)。 while(ch!=EOF) { putchar(ch)。 ch=fgetc(fp)。 } printf(\n)。 fclose(fp)。 } 程序中第 6 行以读写文本文件方式打开文件 string。 程序第 13行从键盘读入一个字符后进入循环,当读入字符不为回车符时,则把该字符写入文件之中,然后继续从键盘读入下一字符。 每输入一个字符,文件内部位置指针向后移动一个字节。 写入完毕,该指针已指向文件末。 如要把文件从头读出,须把指针移向文件头,程序第 19 行 rewind 函数用于把 fp所指文件的内部位置指针移到文件头。 第 20至 25行用于读出文件中的一行内容。 【例 】把命令行参数中的前一个文件名标识的文件,复制到后一个文件名标识的文件中, 如命令行中只有一个文 件名则把该文件写到标准输出文件 (显示器 )中。 include main(int argc,char *argv[]) { FILE *fp1,*fp2。 char ch。 if(argc==1) { printf(have not enter file name strike any key exit)。 getch()。 exit(0)。 } if((fp1=fopen(argv[1],rt))==NULL) { printf(Cannot open %s\n,argv[1])。 getch()。 exit(1)。 } if(argc==2) fp2=stdout。 else if((fp2=fopen(argv[2],wt+))==NULL) { printf(Cannot open %s\n,argv[1])。 getch()。 exit(1)。 } while((ch=fgetc(fp1))!=EOF) fputc(ch,fp2)。 fclose(fp1)。 fclose(fp2)。 } 本程序为带参的 main函数。 程序中定义了两个文件指针 fp1和 fp2,分别指向命令行参数中给出的文件。 如命令行参数中没有给出文件名,则给出提示信息。 程序第 18行表示如果只给出一个文件名,则使 fp2指向标准输出文件 (即显示器 )。 程序第 25行至 28行用循环语句逐个读出文件 1中的字符再送到文件 2中。 再次运行时,给出了一个文件名,故输出给标准输出文件 stdout,即在显示器上显示文件内容。 第三次运行,给出了二个文件名,因此把string中的内容读出,写入到 OK之中。 可用 DOS命令 type显示 OK 的内容。 字符串读写函数 fgets和 fputs 1. 读字符串函数 fgets 函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名 ,n,文件指针 )。 其中的 n是一个正整数。 表示从文件中读出的字符串不超过 n1个字符。 在读入的最后一个字符后加上串结束标志 39。 \039。 例如: fgets(str,n,fp)。 的意义是从 fp所指的文件中读出 n1个字符送入字符数组 str中。 【例 】从 string文件中读入一个含 10个字符的字符串。 include main() { FILE *fp。 char str[11]。 if((fp=fopen(d:\\jrzh\\example\\string,rt))==NULL) { printf(\nCannot open file strike any key exit!)。 getch()。 exit(1)。 } fgets(str,11,fp)。 printf(\n%s\n,str)。 fclose(fp)。 } 本例定义了一个字符数组 str共 11个字节,在以读文本文件方式打开文件 string后,从中读出 10个字符送入 str数组,在数组最后一个单元内将加上 39。 \039。 ,然后在屏幕上显示输出 str数组。 输出的十个字符正是例。 对 fgets函数有两点说明: 1) 在读出 n1个字符之前,如遇到了换行符或 EOF,则读出结束。 2) fgets函数也有返回值,其返回值是字符数组的首地址。 2. 写字符串函数 fputs fputs函数的功能是向指定的文件写入一个字符串 ,其调用形式为: fputs(字符串 ,文件指针 )。 其中字符串可以是字符串常量,也可以是字符数组名,或指针变量,例如: fputs(“abcd“,fp)。 其意义是把字符串“ abcd”写入 fp所指的文件之中。 【例 】在例 string中追加一个字符串。 include main() { FILE *fp。 char ch,st[20]。 if((fp=fopen(string,at+))==NULL) { printf(Cannot open file strike any key exit!)。 getch()。 exit(1)。 } printf(input a string:\n)。 scanf(%s,st)。 fputs(st,fp)。 rewind(fp)。 ch=fgetc(fp)。 while(ch!=EOF) { putchar(ch)。 ch=fgetc(fp)。 } printf(\n)。 fclose(fp)。 } 本例要求在 string文件末加写字符串,因此,在程序第 6行以追加读写文本文件的方式打开文件 string。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。