下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

利用C语言格式化读写文件

作者:课课家     来源: http://www.kokojia.com点击数:1234发布时间: 2019-03-01 17:07:06

标签: 编程语言C语言格式化读写文件

大神带你学编程,欢迎选课

  “在C语言中进行格式化读写文件”按照字面意思通常大家都会理解为将读写文件进行格式化的操作,那么到底我们是不是真的将读写文件进行格式化的操作呢?下面课课家笔者就为大家简单介绍C语言中格式化读写文件的概念和具体的操作编写方法。

利用C语言格式化读写文件_编程语言_C语言_格式化读写文件_课课家

  首先笔者先给大家介绍fscanf()和fprintf()函数的概念。fscanf()和fprintf()函数与前面使用的scanf()和printf()功能相似,它们都是格式化读写函数,具体的区别在于fscanf()和fprintf()的读写对象不是键盘和显示器而是磁盘文件。

  fscanf()和fprintf()函数的原型为:

  intfscanf(FILE*fp,char*format,...);

  intfprintf(FILE*fp,char*format,...);

  在这里fp为文件指针,format为格式控制字符串,...表示参数列表。与scanf()和printf()相比,它们仅仅多了一个fp参数。具体比如:

  FILE*fp;

  inti,j;

  char*str,ch;

  fscanf(fp,"%d%s",&i,str);

  fprintf(fp,"%d%c",j,ch);

  fprintf()返回成功写入的字符的个数,失败则返回负数。fscanf()返回参数列表中被成功赋值的参数个数。

  下面笔者用fscanf和fprintf函数来完成对学生信息的读写,具体代码如下:

  #include<stdio.h>

  #defineN2

  structstu{

  charname[10];

  intnum;

  intage;

  floatscore;

  }boya[N],boyb[N],*pa,*pb;

  intmain(){

  FILE*fp;

  inti;

  pa=boya;

  pb=boyb;

  if((fp=fopen("D:\\\\demo.txt","wt+"))==NULL){

  printf("Cannotopenfile,pressanykeyexit!");

  getch();

  exit(1);

  }

  //从键盘读入数据,保存到boya

  printf("Inputdata:\\n");

  for(i=0;i<N;i++,pa++){

  scanf("%s%d%d%f",pa->name,&pa->num,&pa->age,&pa->score);

  }

  pa=boya;

  //将boya中的数据写入到文件

  for(i=0;i<N;i++,pa++){

  fprintf(fp,"%s%d%d%f\\n",pa->name,pa->num,pa->age,pa->score);

  }

  //重置文件指针

  rewind(fp);

  //从文件中读取数据,保存到boyb

  for(i=0;i<N;i++,pb++){

  fscanf(fp,"%s%d%d%f\\n",pb->name,&pb->num,&pb->age,&pb->score);

  }

  pb=boyb;

  //将boyb中的数据输出到显示器

  for(i=0;i<N;i++,pb++){

  printf("%s%d%d%f\\n",pb->name,pb->num,pb->age,pb->score);

  }

  fclose(fp);

  return0;

  }

  输出结果:

  Inputdata:

  Tom21590.5↙

  Hua11499↙

  Tom21590.500000

  Hua11499.000000

  此时我们打开D:\\\\demo.txt,可以发现文件的内容是可以阅读且格式比较清晰。我们通过用fprintf()和fscanf()函数,在读写配置文件、日志文件时会比较方便,不但程序能够识别,而且用户也可以看懂并手动修改。另外如果我们将fp设置为stdin,那么fscanf()函数将会从键盘读取数据,与scanf的作用相同;设置为stdout,那么fprintf()函数将会向显示器输出内容,与printf的作用相同。具体比如:

  #include<stdio.h>

  intmain(){

  inta,b,sum;

  fprintf(stdout,"Inputtwonumbers:");

  fscanf(stdin,"%d%d",&a,&b);

  sum=a+b;

  fprintf(stdout,"sum=%d\\n",sum);

  return0;

  }

  输出结果:

  Inputtwonumbers:1020↙

  sum=30

  本次利用C语言格式化读写文件的讲解到此暂告一段落,如果以后有什么内容继续进行补充或者修改的话,笔者会在此进行相关的内容补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充,最后希望本次的教程对大家学习C语言能够起到一定的帮助作用!

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程