c语言一行一行的读取txt文件

工作中做的项目,经常需要读取一些脚本,就是一些txt文件,用python读取很简单,但是我们很多工具也是用c/c++语言写的,用c的话读取文件我一般是按照如下的方式:

while(fscanf(pFile,"%[^\n]",CmdLine)!=EOF)

fgetc(pFile);
...
}

其中,pFile是调用fopen函数返回的文件句柄,cmdline是定义的char型数组,用来存储一行的内容。此code运用了fscanf的方式,一行一行的读取txt文件,在while中做处理。其中的%[^\n]属于正则表达式,代表不遇到换行符就一直读下去,直到遇到换行符\n,fscanf函数就退出。退出后进入while,执行fgetc函数,读取一个字符,文件句柄向后移动一个字符,相当于跳过了\n换行符,下一次就从下一行开始读了。

也有用下面的方法读取的:

while(fscanf(pFile,"%[^\n]%*c\n",CmdLine)!=EOF)
{
...
}

相当于将fgetc函数移除,改为正则表达式中%*c的方式跳过\n换行字符。但是我在工作中发现这种方法有一个问题,那就是遇到第一行是空的,从第二行才开始有内容的文件的时候,程序会一直停在第一行无限循环下去,CmdLine中什么也读不到。我觉得貌似是fscanf中使用正则表达式的bug,毕竟正则表达式的支持还是shell或python这种脚本语言比较好。用fgetc就不会出现这种情况。所以还是建议用第一种方法读取文件。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值