yhkn.net
当前位置:首页 >> C语言编程gEtChAr()的问题whilE((Ch=gEtChAr()) !='\n&#3... >>

C语言编程gEtChAr()的问题whilE((Ch=gEtChAr()) !='\n&#3...

#include #define space ' ' int main(void) { char ch; while((ch=getchar())!='\n') //这里一次getchar { if(ch==space) putchar(ch); else putchar(ch+1); //ch=getchar(); //这里一次getchar,这一次的就没有了,这句话注释掉就可以了 } putchar(ch); return 0; }

这是getchar的问题在按Enter前,先把字符缓存按Enter后一起输出另外有一个像你说的效果的叫getch()

getchar()函数在while循环中不断读取缓冲区的字符然后与换行符比较,不等的自热就舍弃了所以作用相当于flush缓冲区了

首先这句话是不对的,应该是while((ch=getchar())!='\n') ch=getchar()的意思是获得一个字符给ch,如果获得的字符不是'\n'(回车符),就执行循环,否则退出循环.

先运行getchar()=='A'再赋值如果你输入A,getchar()=='A'为真..就是1输入其 上面这个例子正确的写法并不难:while((c = getc(in)) != EOF) putc(c, out);.

ch=getchar&&ch!='\n' 等价于 ch= (getchar() && ch!='\n') ch 未更新.======= ch 为 0 才能结束.这样可以结束:char ch='\n'; while( ch=getchar() && ch!='\n') {printf("%#x ",ch);}; printf("%#x ",ch);

因为赋值符的优先级最低,所以前面那个c获取的是输入的字符,后面那个得到的是getchar()!='\n'表达式判断结果.

while((c=getchar())!='\n') { if((c>='a'&&c<='z')||(c<='A'&&c<='Z')) { c=c+4; if(c>'Z'&&c<='Z'+4||c>'z') c=c-26; } printf("%c",c);}输入字符串并以回车结束.字符串中每个字符输入后,如果是字母,则顺次后推4个并打印输出(例:输入为A,输出为E.输入为Y,输出为C),如果不是字母则输出原字符.另外,感觉原程序少了一点..if(c>'Z'&&c<='Z'+4||c>'z')这句写成if(c>'Z'&&c<='Z'+4||(c>'z'&&c<='z'+4))可能更符合它的意思..不然这个程序的意思太别扭了

代码有问题,应该是while ((ch = getchar()) != '\n')!和i可别搞混啊,差别太大了目的是不断读取用户输入的字符,当读取到的字符为回车符的时候停止循环.

\n是换行的意思,这句话的意思就是一直执行while后的内容,直到getchar函数值为“换行”时终止.

相关文档
tuchengsm.com | lyxs.net | jclj.net | mcrm.net | btcq.net | 网站首页 | 网站地图
All rights reserved Powered by www.yhkn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com