我正在尝试编写一些读取文件并忽略换行符的代码(\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但是试图制作跨平台,所以这很有用.
试试这个
while ( (c = fgetc(fp)) != EOF ) { if ( c != '\n' && c != '\r' ) { buffer[loop++] = c; } }
您正在运行哪个操作系统?Windows上的\n是两个字符(\ r \n).如果您只想忽略换行符,则不需要第二个条件.
但另一个问题是你每次都增加循环变量!只有在向缓冲区添加内容时才应增加"循环"!将'loop ++'从for(..)中取出并将其添加到缓冲区[loop ++] = c;.很可能你在缓冲区中得到随机字符代替'\n':s,例如,它可以是零.