c语⾔⼀⾏⼀⾏的读取txt⽂件
⼯作中做的项⽬,经常需要读取⼀些脚本,就是⼀些txt⽂件,⽤python读取很简单,但是我们很多⼯具也是⽤c/c++语⾔写的,⽤c的话读取⽂件我⼀般是按照如下的⽅式:
while(fscanf(pFile,"%[^\n]",CmdLine)!=EOF)
{
fgetc(pFile);
...
python怎么读取txt}
其中,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就不会出现这种情况。所以还是建议⽤第⼀种⽅法读取⽂件。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论