c文件处理

本文介绍如何在不同模式下打开文件,并处理文本文件中的空行问题。具体包括使用文本模式打开文件时如何统一处理不同操作系统的换行符,以及在二进制模式下如何手动处理各种换行符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、使用文本形式打开,即指定文件模式不含有 'b '的话,在读取时底层(fgetc,fgets,fscanf)会将各种系统(MS-Dos,MS-Window,Macitonish,Unix)下的行结束符(分别是\r\n,\r\n,\r,\n)转换成统一的\n,因此可以通过如下方式判定: 
#define   BUF_MAXLEN   100 

char   buf[BUF_MAXLEN]; 
FILE   *fp   =   NULL; 
/* 
*   OPEN   IT   AS   TEXT   FILE. 
*/ 
while(fgets(buf,   BUF_MAXLEN,   fp)) 
{ 
    if(buf[0]== '\n ') 
    { 
          //打印空行信息,例如fputs( "***empty   line\n ",   stdout); 
      } 
    else 
    { 
          /*   
          *   打印出来,注意buf中可能已经有 '\n '(一行没有读完), 
          *   也可能没有(此次读到行结束符) 
          **/ 
      } 

2、使用二进制形式打开,你需要自己处理不同的行结束符,当然如果你要处理最后一行那么还应该处理不同系统下的文件结束符(实际上处理msdos-   '\032 '就可以了) 
3、具体实现细节请看上帖,改正 
                                          //Line   end-sign   based   on   the   above   processing 
                                          if(buf[0]   ==   '\n '   ||   buf[0]   ==   '\0 ') 
                                          //   empty   line 
                                          { 
                                            fputs( "***empty   line\n ",   stdout); 
                                          } 
应为: 
                                          //Line   end-sign   based   on   the   above   processing 
                                          if(buf[0]   ==   '\n ') 
                                          //   empty   line 
                                          { 
                                            fputs( "***empty   line\n ",   stdout); 
                                          }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值