忽略C中的换行符

时间:2009-02-14 00:26:26

标签: c stdio

我正在尝试编写一些读取文件并忽略换行符的代码(\ 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但是试图制作跨平台,所以这很有帮助。

2 个答案:

答案 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,例如,它可以是零。