我正在尝试编写一些读取文件并忽略换行符的代码(\ n),到目前为止我已经:
c = fgetc(fp);
for(int loop = 0; c != EOF; loop++)
{
if((c != '\n') && (c != '\\'))
{
buffer[loop] = c;
}
c = fgetc(fp);
}
但它似乎不会忽略'\ n'位(不确定'\')
对于代码的布局感到抱歉,该网站似乎不喜欢我的Opera版本:(
编辑: 谢谢大家,我已经编了大约6个小时的编码并完全忽略了递增,这就是为什么我认为\ n仍然保持静止。
我也不知道\ r,uning Linux但是试图制作跨平台,所以这很有帮助。
答案 0 :(得分:8)
试试这个
while ( (c = fgetc(fp)) != EOF )
{
if ( c != '\n' && c != '\r' )
{
buffer[loop++] = c;
}
}
答案 1 :(得分:6)
您正在运行哪个操作系统? Windows上的\ n是两个字符(\ r \ n)。如果您只想忽略换行符,则不需要第二个条件。
但另一个问题是你每次增加循环变量!只有在向缓冲区添加内容时才应增加“循环”!将'loop ++'从for(..)中取出并将其添加到缓冲区[loop ++] = c;。很可能你在缓冲区中得到随机字符而不是'\ n':s,例如,它可以是零。