首页 > 解决方案 > C函数输入字符串和计算

问题描述

    #include <stdio.h>
    #include <string.h>
    #define SIZE 30
    int countWord(int a[]);
    int countSpace(int a[]);
    int countVowel(int a[]);
    int printResult(int a[]);

int main()//starting main 
{
    char string1[SIZE];
    printf("%s","Enter a string less than 29 characters");
    scanf("%29[^\n]",string1);  //anything except \n.

    printResult(string1);
}
int countWord(int a[]){
    int count=1;
    for(size_t i=0;i<SIZE&&a[i]!='\0';++i){ 
        if(a[i]==' '){
            count++;
        }
    }
    return count;
}
int countSpace(int a[]){
    int count1=0;
    for(size_t i=0;i<SIZE&&a[i]!='\0';++i){ 
        if(a[i]==' '){
            count1++;
        }
    }
    return count1;
}
int countVowel(int a[]){
    int count2=0;
     for(size_t i=0;i<SIZE&&a[i]!='\0';++i){
         if(strchr("aeiouAEIOU", a[i])){
            count2++;
        }
     }
     return count2;
}
int countNum(int a[]){
    int count3=countWord(a)-countVowel(a)-countSpace(a);
    return count3;
}
int printResult(int a[]){
    printf("Your sentence include\n");
    printf("Number of words:%d\n",countWord(a));
    printf("Number of spaces:%d\n",countSpace(a));
    printf("Number of vowels:%d\n",countVowel(a));
    printf("Number of consonants and special characters:%d\n",countNum(a));
}

这个程序是关于要求用户输入一个字符串并计算有多少单词、空格、元音......但是在输入一个字符串后我得到了非常错误的结果。我认为逻辑很好,并且正在努力在这里找到任何问题

标签: carraysstringfunction

解决方案


在这里努力寻找任何问题

节省时间,启用所有警告。这是关键错误。

审查类型。

int printResult(int a[]);

  char string1[SIZE]; 
  printResult(string1);

" "带有, " abc def ",的字数统计错误" abcd"

替代方案:为单词的开头设置一个标志。

int countWord(int a[]){
int countWord(const int_but_I_suspect_you_want *a) {
  int count=0;
  int start_of_word_possible = 1;
  while (*a) {
    if (isspace(*a)) {
      start_of_word_possible = 1;
    } else {
      if (start_of_word) count++;
      start_of_word_possible = 0;
    }
    a++;
  }
  return count;
}

推荐阅读