关于while语句的问题
代码如下 :#include<stdio.h>
int main(void)
{
int ch;
printf("请输入一行英文句子:");
while ((ch=getchar()) != '\n')
{
if ('A' <= ch && 'Z' >= ch)
{
ch = ch-'A' +'a';
}
else if(ch>='a'&&ch<='z')
{
ch = ch - 'a'+'A';
}
putchar(ch);
}
putchar('\n');
return 0;
}
要是把'\n'换成是'\0' 那么我的代码就一直处在转换后的等待状态结束不了(我知道'\0'是一个字符串的结束符)我输入'\0' 也没有结束循环求解
要是觉得我描述的不清楚,麻烦您复制粘贴到编译器看一下('\n'换成是'\0' )谢谢啦 getchar()
又 putchar() 你打算什么时候结束?
好比你一个箱子,从里面取东西取来。然后又放进去,你觉得你的箱子空的了吗?
先把你的题意说清楚吧 '\0' 属于不可见字符
可以按下Alt键然后按小键盘上面的数字0键,一定是小键盘上面的0
可以通过按Alt+小键盘上的数字来输入字符的ASCII
例如输入字母'A',可以按下Alt键然后在小键盘上依次按数字键6和5,然后松开Alt键
我也不清楚是否理解你的提问了。按照我对你的问题理解说一下个人看法。你所说的把'\n'换成'\0',是想把while循环的条件中的'\n'换成'\0'吗?那样是肯定不行的。
首先需要了解getchar(),它是从标准输入里读取一个字符,标准输入一般理解是键盘能输入的字符,这和ASCII表并不完全对应,例如ASCII表中回车换行是两个字符(ASCII码分别是13和10),在标准输入中是一个键。
然后再来理解'\n'和'\0','\0'是C语言中字符串的结束字符,在ASCII码中是0,即NULL,但是并不是标准输入的字符;'\n'是回车换行字符,是能够使用标准输入进行输入的字符。
最后看看程序的执行,你是无法使用标准输入来输入'\0'的,因此若用'\0'作为while循环判断也就无法结束循环。'\n'能够被getchar捕获,因此将之作为while循环结束的判断条件是可以结束while循环的。 sunrise085 发表于 2018-12-15 23:39
我也不清楚是否理解你的提问了。按照我对你的问题理解说一下个人看法。你所说的把'\n'换成'\0',是想把whil ...
明白了谢谢 人造人 发表于 2018-12-15 23:14
'\0' 属于不可见字符
可以按下Alt键然后按小键盘上面的数字0键,一定是小键盘上面的0
可以通过按Alt+小键 ...
谢谢 ba21 发表于 2018-12-15 23:05
getchar()
又 putchar() 你打算什么时候结束?
我把getchar()理解为scanfputchar理解为printf()所以我认为是可以结束的 顾西凉 发表于 2018-12-16 12:19
我把getchar()理解为scanfputchar理解为printf()所以我认为是可以结束的
不好意思,我把putchar 看成 ungetch。失误 ba21 发表于 2018-12-16 12:29
不好意思,我把putchar 看成 ungetch。失误
那我这样理解没有问题把
页:
[1]