[求助]用Scanf输入完字符串之后,为什么要处理一下后面的回车符?
在谭浩强的《C程序设计第三版》里,在对fputc和fgetc两个函数进行应用举例的时候,用到下面一个例子:#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
char ch,filename[10];
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("Can't open file\n");
exit(0);
}
ch=getchar();/*此语句用来接收执行Scanf语句时最后输入的回车符*/
ch=getchar();
while(ch!='#')
{
fputc(ch,fp);
putchar(ch);
ch=getchar();
}
putchar(10);
fclose(fp);
}
其他的注释我都先省略掉了,我不明白为什么还要用这样一条语句接收这个回车。小弟才疏学浅,一直认为程序执行到某个地方等待用户的响应,回车符是让机子接收用户响应的一个标志,在这里怎么又成了一个字符了?如果它是一个字符,为什么在其他地方用scanf的时候没有多出这么一句?为什么像getchar这样的函数不需要再这样专门接收一下回车符?
等待高手的解释,在这里先谢过了!