1

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

4

2 回答 2

8

试试这个

while ( (c = fgetc(fp)) != EOF )
{
  if ( c != '\n' && c != '\r' )
  {
    buffer[loop++] = c;
  }
}
于 2009-02-14T00:35:22.810 回答
6

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

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

于 2009-02-14T00:29:19.140 回答