c语言 字符与文件的问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 13:37:05
在下面的程序中,空格字符和换行字符为什么不同的?望高手解答 谢谢~~
FILE * fp;
FILE * temp;
..../*打开文件fp和temp*/
while((ch=fgetc(fp))!=EOF)//读fp
{

if(ch==' ')
{
fputc(' ',temp);//写入temp空格
while((ch=fgetc(fp))==' ')
{
continue;
}
fseek(in,-1,1);
}
}
//就是去多个空格为一个空格,程序没问题;
现在的问题是如果去多个连续回车为一个空格的话,如下:
while((ch=fgetc(fp))!=EOF)//读fp
{

if(ch=='\n')
{
fputc(' ',temp);//写入temp空格
while((ch=fgetc(fp))=='/n')
{
continue;
}
fseek(in,-1,1);
}
}
却是个死循环???什么情况?大家帮帮我啊 真心谢谢诶~
终于找到答案了~原来是因为我的那个文件结尾是个回车。导致一直在那循环~再加上判断就可以了再fseek前面if(ch!=EOF){fseek(temp,-1,1);}即可~谢谢

还需要考虑换行符'\r'以及回车'\n',正确代码如下
if(ch=='\n' || ch=='\r')
{
fputc(' ',temp);//写入temp空格
while((ch=fgetc(fp))=='\n' || ch == '\r')
{
continue;
}
fseek(in,-1,1);
}

while((ch=fgetc(fp))=='/n')

改为
while((ch=fgetc(fp))=='\n')

fputc(' ',temp);//写入temp空格
可以写成fputc(ch,temp);