实用C语言程序设计教程陈建铎电子教案 第8章.ppt

实用C语言程序设计教程陈建铎电子教案 第8章.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在程序中,用“w”方式打开文件file2.txt,然后通过循环语句将字符型数组a中的字符串写入文件。写入时是按照字符串中字符的个数写入,并非按照数组定义的大小,而且是不含字符串结束符的,因此总共写入28个字符,文件长度也为28字节。 由于fputs函数并不将字符串结束符\0写入文件,文件中的字符串之间不存在任何分隔符,因此,字符串很难被正确读出。为了使文件中的字符串能被正确读出,可在每个字符串末尾增加一个换行符。这时,写入文件的每个字符串后除多一个换行符(\n)外,还自动加一个EOF。例如,将上例中的第4行改为: char a[ ][9]={BASIC\n, PASCAL\n, FORTRAN\n, COBOL\n, ALGOL\n}; 程序运行后,文件“file2.txt”的长度由28字节变为38字节。 【例8-4】在上例创建的file2.txt文件的末尾增加三个字符串“Turbo C”,“Borland C”,“MS-C”。 #include stdio.h FILE *fp; main() {char a[ ][10]={Turbo C\n, Borland C\n,MS-C\n }; int i; if ((fp=fopen(file2.txt, a))==NULL) {printf(Cannot open file\n); exit(1);} for (i=0;i=2;i++) fputs(a[i],fp); fclose(fp); } 8.4.2.2 fgets函数 fgets函数用来从指定的文本文件中读取一个字符串,其调用格式如下: fgets(s,n,fp); 其中,s是作为缓冲区使用的字符数组名或字符串指针,即为读取到的字符串的内存地址;参数n为读取字符的个数;参数fp为要读取文件的指针。 该函数的功能是从fp指定的文件中读取n-1个字符,存入s所指定的内存缓冲区。如果读取够n-1个字符,或在n-1个之前读取到换行符,或读取到文件结束标志EOF,将在读取到的字符串后自动添加一个\0字符,结束读取。读取到换行符被保留在\0之前,EOF不予保留。该函数执行成功,返回读取的字符串s的首地址,否则返回空指针。 8.4.3 文件的数据块读写函数 8.4.3.1 fwrite函数 fwrite函数用来向指定文件中写入数据块。其一般调用形式为: fwrite(buf,size,count,fp); 其中,buf为被写入数据在内存中存放的起始地址,可以是数组名或指向数组的指针;size为每次要写入的字节数;count为要写入的次数;fp为文件指针。 该函数的功能是从buf所指向的内存区域取出count个数据项写入fp指向的文件中,每个数据项的长度为size,也就是写入的数据块大小为size*count个字节。如果函数执行成功,返回值为实际写入数据项的个数,否则若返回值小于实际需要写入数据项的个数count,则出错。当文件按二进制打开时,fwrite函数可以写入任何类型的信息。 【例8-6】从键盘输入几个学生的学号、姓名、成绩,并将该数据写入文件file3.dat中。程序如下: #include stdio.h #define N 3 struct student {int no; char name[10]; int score; }stud[N]; main() {FILE *fp; int i; for (i=0;iN;i++) {printf (\nInput the number:); scanf (%d,stud[i].no); printf (Input the name:); scanf (%s,stud[i].name); printf(Input the score:); scanf(%d,stud[i].score); } if ((fp=fopen(file3.dat, wb))==NULL) {printf(Cannot open file\n); exit(1); } for (i=0;iN;i++) if (fwrite(stud[i],sizeof(struct student),1,fp)!=1) printf (File write error\n); fclose (fp); } 程序中字符常量N表示输入学生的个数,程序运行中一共输入了三个学生的数据: Input the number:1↙ Input the name:LiMing↙ Input the score:90

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档