读取多个文件fgets并输出,每输出2行加一空行,static局部变量

FILE *fp = fopen(fileName, "r");

if(fp == NULL)

{

       perror("ERROR: fopen, fail to open file");

        return -1;

}

while(fgets(buf, BUFFSIZE, fp) != NULL)

{}

源代码

  1 /*
  2  * FILE: p61_file_fgets.c
  3  * DATE: 20180107
  4  * --------------
  5  * DESCRIPTION: fopen, fgets
  6  */
  7 
  8 #include <stdio.h>
  9 #include <stdlib.h>
 10 #include <string.h>
 11 
 12 #define BUFFSIZE 128
 13 
 14 int output(char *fileName)
 15 {
 16         FILE *fp;
 17         char buf[BUFFSIZE];
 18         int count = 0;
 19 
 20         fp = fopen(fileName, "r");
 21         if(fp == NULL)
 22         {
 23                 perror("ERROR: fopen, fail to open file");
 24                 return -1;
 25         }
 26         // fgets 每次读取一行
 27         while(fgets(buf, BUFFSIZE, fp) != NULL)
 28         {
 29                 int len;
 30                 len = strlen(buf);
 31                 buf[len-1] = '\0';      // 覆盖从文件中读取的换行符     
 32                 // 此处printf中加了换行符,而从文件中读取的一行也包含换行符
 33                 printf("%d: %s\n", len, buf);
 34 
 35                 count++;
 36                 if((count%2) == 0)
 37                         printf("\n");
 38         }
 39         fclose(fp);
 40         return 0;
 41 }
 42 
 43 int main(void)
 44 {
 45         char file_name[][10] = {"test1.txt", "test2.txt"};
 46         int i = 0;
 47         while(i<3)
 48         {
 49                 if(output(file_name[i]) < 0)
 50                         exit(1);
 51                 i++;
 52         }
 53         return 0;
 54 }
编译执行:


注意:局部变量count若改为static int count,则每个文件输出行数的累加就会被保存。    

   对于一个存储类别声明为static的局部变量而言,其作用域没有改变,只有定义该局部变量的函数可以引用该变量。但是生命期发生了变化,在整个程序执行期间,该变量都存在。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值