用C计算句子中的单词和字符数

时间:2012-03-05 13:27:11

标签: c

我尝试了以下程序。

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();

}

3 个答案:

答案 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;
}