忽略C中的换行符

Aur*_*ega 1 c stdio

我正在尝试编写一些读取文件并忽略换行符的代码(\n),到目前为止我有:

c = fgetc(fp);
for(int loop = 0; c != EOF; loop++)
{
    if((c != '\n') && (c != '\\'))
    {
        buffer[loop] = c;
    }
    c = fgetc(fp);
}
Run Code Online (Sandbox Code Playgroud)

但它似乎并没有忽略'\n'位(不确定'\')

对不起代码的布局,该网站似乎不喜欢我的Opera版本:(

编辑:谢谢大家,我已经编了大约6个小时的编码,完全忽略了增量,这就是为什么我认为\n仍然是静止的.

我也不知道\ r,uning Linux但是试图制作跨平台,所以这很有用.

And*_*rsK 8

试试这个

while ( (c = fgetc(fp)) != EOF )
{
  if ( c != '\n' && c != '\r' )
  {
    buffer[loop++] = c;
  }
}
Run Code Online (Sandbox Code Playgroud)


Ant*_*ima 6

您正在运行哪个操作系统?Windows上的\n是两个字符(\ r \n).如果您只想忽略换行符,则不需要第二个条件.

但另一个问题是你每次都增加循环变量!只有在向缓冲区添加内容时才应增加"循环"!将'loop ++'从for(..)中取出并将其添加到缓冲区[loop ++] = c;.很可能你在缓冲区中得到随机字符代替'\n':s,例如,它可以是零.