风骚居士 发表于 2014-5-4 11:16:31

菜鸟问题,随便来个高手解释

#include<stdio.h>
#include<stdlib.h>
int main()
{
        FILE *fp;
        char ch,filename;
        printf("请输入所用的文件名:");
        scanf("%s",filename);
        if((fp=fopen(filename,"w"))==NULL)
        {
                printf("无法打开此文件\n");
                exit(0);
        }
        ch=getchar();                                       //用来接收最后输入的回车符          <<<<<-------------高手什么意思??
        printf("请输入要输入的字符串并以“#”字符结束\n");
        ch=getchar;
        while(ch!='#')
        {
                fputc(ch,fp);
                putchar(ch);
                ch=getchar();
        }
        fclose(fp);
        putchar(10);
        return 0;
}


唯一注释的地方,为什么说“用来接收最后输入的回车符”?这句话什么意思,求解释

sidfate 发表于 2014-5-4 14:40:14

scanf("%s",filename); 这句话执行时以回车符结束,此时回车符还在输入缓冲区中。

ch=getchar(); 这句话的意义就是讲这个多余的回车符取出来。

aoweisi 发表于 2014-5-5 22:42:54

看一看~~~~~

秦晓彬 发表于 2014-5-6 12:50:07

sidfate 发表于 2014-5-4 14:40 static/image/common/back.gif
scanf("%s",filename); 这句话执行时以回车符结束,此时回车符还在输入缓冲区中。

ch=getchar(); 这句话 ...

好像不加也不碍事吧,????
不对,你的事正解,我想错了,应为后来还要从stdin里面读取
其实也可以换成rewind(fp);
我一般是通过这种方式来清空缓冲区的·
呵呵

秦晓彬 发表于 2014-5-6 12:52:05

putchar(10);
你的这个是什么意思,表示不理解,还有
你前面写了一个ch=getchar;
这种写法是被允许的吗:dizzy::dizzy::dizzy::dizzy:

风骚居士 发表于 2014-5-6 12:56:20

putchar(10);的意思是打出一个换行符,换行符的ASCII码是10。
ch=getchar();打少了括号
页: [1]
查看完整版本: 菜鸟问题,随便来个高手解释