这是添加字母数字字符串中的数字的代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int total=0;
char ch;
printf("enter the string\n");
ch=getchar();
while(ch!='\0')
{
printf("I am here !!");
if (!(isalpha(ch)))
total+=(int)ch;
ch=(char)getchar();
printf("I am here !!");
}
printf("\ntotal is %d",total);
return 0;
}
无论我输入什么字符,每个字符都会有4个“我在这里”。
我尝试使用
while((ch=getchar())!='\0');
但它给出了同样的问题。
答案 0 :(得分:9)
getchar
在输入结尾处不返回'\0'
:它是不从空终止的C字符串读取,而是从控制台,文件或其他一些流。
如果没有其他输入,getchar
会返回EOF
。这是您应该检查以决定何时停止循环的条件。
Stack Overflow提供了很多关于如何实现循环读取的好例子getchar
(link#1; link#2;请注意示例中使用的数据类型。)
答案 1 :(得分:3)
它不起作用的原因是因为'\0'
无法从键盘插入,因此getchar()
不太可能返回'\0'
,这是一种正确的测试方式输入结束将是
int ch;
while (((ch = getchar()) != EOF) && (ch != '\n'))
这是因为EOF
表示用户有意想要停止输入数据,而'\n'
通常是在stdin
被刷新时会看到的最后一件事,因为它会触发冲洗。