无法读取for循环中的所有字符(使用getchar)
代码: //程序来查找不存在的元音无法读取for循环中的所有字符(使用getchar),c,C,代码: //程序来查找不存在的元音 #include<stdio.h> int main() { int count;char letter;int vowel=0; for(count=0;count<10;count++) { letter=getchar(); switch(letter) { case 'a': case 'e':
#include<stdio.h>
int main()
{
int count;char letter;int vowel=0;
for(count=0;count<10;count++)
{
letter=getchar();
switch(letter)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':vowel++;
}printf("Count:%d",count);
}
printf("NO of vowels is %d\n",vowel);
return 0;
}
#包括
int main()
{
整数计数;字符字母;整数元音=0;
for(count=0;countSpace'
也是一个字符。getchar
一次读取一个字符,因此也读取'
。从输入中删除空格。我很惊讶您没有从printf中注意到(“计数:%d\n”);
行,每输入一个字母的计数增加两个。getChar
函数从输入文本中获取所有字符,包括空格和换行符。使程序按预期运行的最简单方法是将最大计数增加到20:
for(count = 0; count < 20; count++)
{
letter = getchar();
// ...
for(计数=0;计数<20;计数++)
{
letter=getchar();
// ...
替代方法包括使用scanf和检查是否到达文本输入的末尾,但是您的实现要安全得多。\include
#include <stdio.h>
#include <ctype.h>
int main(){
int count=0, vowel=0;
char letter;
while(count < 10){
letter=getchar();
if(isgraph(letter)){
switch(tolower(letter)) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':vowel++;
}
++count;//Counting only the case of the display characters that are not blank
}
}
printf("NO of vowels is %d\n",vowel);
return 0;
}
#包括
int main(){
int计数=0,元音=0;
字符字母;
同时(计数<10){
letter=getchar();
if(图形(字母)){
开关(tolower(字母)){
案例“a”:
案例“e”:
案例“i”:
案例“o”:
大小写“u”:元音++;
}
++count;//仅计算非空显示字符的大小写
}
}
printf(“元音的数量为%d\n”,元音);
返回0;
}
getChar
也会获取空格。如果按enter按钮输入每个字符,则enter code会被放入缓冲区,并在每秒钟的循环中读取。也许用20而不是10不好?因为新行可以有两个字符,然后从标准输入读取时应该使用30。最好使用getch或chang之类的东西e terminal BehaviorNewline是一个字符,'\n'
。但是文件可能有其他空格。不要猜测20或30之类的数字,只在读取非空格时增加计数器。