我是C编程的新手,我可能有一个简单的问题。 我看了整个网站寻找答案,但我没有运气。 所以我的程序运行正常,如果在输入文件的末尾有一个空格。例如,从unix
中的命令行运行程序./ program-name< file.txt
如果file.txt是
//有一个空格连|是一个空间。
猫冉。| |
我得到了正确的输出1 1 1
如果是的话 猫跑。(没有空间,我得到1 1)
//I have to use C for this program.
#include <stdio.h>
int main(void){
int i=0;
char c;
int NOV=0;
while( (c=getchar())!=EOF && c !='\n' && c !=10 ){
if( c=='a'||c=='e'||c=='i'||c=='o'||c=='u' ){
NOV++;
}
if(c==' '){
printf("%d ",NOV);
NOV=0;
}
}
printf("\n");
return 0;
}
感谢任何帮助。
答案 0 :(得分:4)
麻烦的是当你得到没有空格的EOF时,你退出循环,循环后没有任何东西打印出元音的数量。
可能在循环之后添加if (NOV != 0) printf("%d", NOV);
。
另外,你使用10是奇怪的; '\ n'是control-J或10.你可能会想到control-M,也就是回车或'\r'
。
此外,正如Blue Pixy在评论中指出的那样,您应始终使用int c;
来接收getchar()
或getc()
fgetc()
的回复。函数返回int
,其可以是适合unsigned char
或EOF的任何值,负值。如果您使用char c
,则会遇到问题。
答案 1 :(得分:0)
你的程序应该是这样读的(已经删除了很多无用的混乱):
int main(void)
{
int c;
int nov = 0;
while( (c = getchar()) != EOF && c != '\n')
{
if( c=='a'||c=='e'||c=='i'||c=='o'||c=='u' )
nov++;
}
printf("%d\n", nov) ;
return 0;
}