linux常用c函数:文件内容操作篇

来源:Linux认证    发布时间:2012-11-10    Linux认证视频    评论

  fopen(打开文件)

  相关函数  open,fclose

  表头文件  #include<stdio.h>

  定义函数  FILE * fopen(const char * path,const char * mode);

  函数说明  参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

  mode有下列几种形态字符串:

  r 打开只读文件,该文件必须存在。

  r+ 打开可读写的文件,该文件必须存在。

  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

  a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

  上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。

  返回值  文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。

  附加说明  一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。

  范例  #include<stdio.h>

  main()

  {

  FILE * fp;

  fp=fopen(“noexist”,”a+”);

  if(fp= =NULL) return;

  fclose(fp);

  }

  fputc(将一指定字符写入文件流中)

  相关函数  fopen,fwrite,fscanf,putc

  表头文件  #include<stdio.h>

  定义函数  int fputc(int c,FILE * stream);

  函数说明  fputc 会将参数c 转为unsigned char 后写入参数stream 指定的文件中。

  返回值  fputc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。

  范例  #include<stdio.h>

  main()

  {

  FILE * fp;

  char a[26]=”abcdefghijklmnopqrstuvwxyz”;

  int i;

  fp= fopen(“noexist”,”w”);

  for(i=0;i<26;i++)

  fputc(a[i],fp);

  fclose(fp);

  }

  fputs(将一指定的字符串写入文件内)

  相关函数  fopen,fwrite,fscanf,fputc,putc

  表头文件  #include<stdio.h>

  定义函数  int fputs(const char * s,FILE * stream);

  函数说明  fputs()用来将参数s所指的字符串写入到参数stream所指的文件内。

  返回值  若成功则返回写出的字符个数,返回EOF则表示有错误发生。

  范例  请参考fgets()。

  fread(从文件流读取数据)

  相关函数  fopen,fwrite,fseek,fscanf

  表头文件  #include<stdio.h>

  定义函数  size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);

  函数说明  fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目,如果此值比参数 nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。

  返回值  返回实际读取到的nmemb数目。

  附加说明

  范例  #include<stdio.h>

  #define nmemb 3

  struct test

  {

  char name[20];

  int size;

  }s[nmemb];

  main()

  {

  FILE * stream;

  int i;

  stream = fopen(“/tmp/fwrite”,”r”);

  fread(s,sizeof(struct test),nmemb,stream);

  fclose(stream);

  for(i=0;i<nmemb;i++)

  printf(“name[%d]=%-20s:size[%d]=%d/n”,i,s[i].name,i,s[i].size);

  }

  执行  name[0]=Linux! size[0]=6

  name[1]=FreeBSD! size[1]=8

  name[2]=Windows2000 size[2]=11

  freopen(打开文件)

  相关函数  fopen,fclose

  表头文件  #include<stdio.h>

  定义函数  FILE * freopen(const char * path,const char * mode,FILE * stream);

  函数说明  参数path字符串包含欲打开的文件路径及文件名,参数mode请参考fopen()说明。参数stream为已打开的文件指针。Freopen()会将原stream所打开的文件流关闭,然后打开参数path的文件。

  返回值  文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。

  范例  #include<stdio.h>

  main()

  {

  FILE * fp;

  fp=fopen(“/etc/passwd”,”r”);

  fp=freopen(“/etc/group”,”r”,fp);

  fclose(fp);

  }

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答