我尝试了以下程序。
INPUT-:我想要帮助 期望的输出 - :字= 3个字符= 9
但是实际输出偏离了期望值。 有人能说出我的错误。
void main()
{
int countch=0;
int countwd=1;
printf("Enter your sentence in lowercase: ");
char ch='a';
while(ch!='\r')
{
ch=getche();
if(ch==' ')
countwd++;
else
countch++;
}
printf("\n Words = ",countwd);
printf("Characters = ",countch-1);
getch();
}
答案 0 :(得分:3)
建议:getchar()
返回int
,而不是char
。这似乎是开始C程序员最常见的陷阱之一。
此外,您应检查特殊值EOF
并在程序出现时停止该程序;这是执行读取输入的程序的典型和“干净”方式,它将使程序自动处理交互式输入(来自终端)和来自文件的输入。
答案 1 :(得分:1)
您可能会发现一些使用的观察结果很少:
1.您正在使用getch
& getche
这两个都是非标准函数。请改用getchar
。在这种情况下,如unwind's response中已经指出的那样,您需要使用int
作为返回类型
2.请将main
的返回类型从void
更改为int
3.您没有在printf
中指定格式。请添加%d
说明符以打印整数
我没有使用过键盘,但是ideone允许你为程序添加输入。 Here是基于您在ideone上的示例的参考
希望这有帮助!
答案 2 :(得分:0)
#include<stdio.h>
#include<stdbool.h>
int main(void)
{
char c = '\0';
int nw = 0,nc = 0,nl = 0;
bool flag = true;
bool last = false,cur = false;
while(flag && (c = getchar())) {
if(c != EOF)
++nc;
else
flag = false;
if(c == '\n') nl++;
cur = (c == EOF || c == ' ' || c == '\t' || c == '\n')?false:true;
if(last && !cur )
++nw;
last = cur;
}
printf("\nNo of chars : %d",nc);
printf("\nNo of lines : %d",nl);
printf("\nNo of words : %d",nw);
return 0;
}