c - 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));
}
这个程序是关于要求用户输入一个字符串并计算有多少单词、空格、元音......但是在输入一个字符串后我得到了非常错误的结果。我认为逻辑很好,并且正在努力在这里找到任何问题
解决方案
在这里努力寻找任何问题
节省时间,启用所有警告。这是关键错误。
审查类型。
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;
}
推荐阅读
- docker - 如何修复 jFrog Artifactory 中的 SSL 错误
- reinforcement-learning - 当状态之间的转换同时依赖于多个操作时,我如何执行操作和状态?
- unit-testing - Swift 5 结果:XCTAssertEqual 在没有更多上下文的情况下是模棱两可的
- c# - 无法转换类型为“的对象”
键入'System.Collections.Generic.IList - python - Dataframe 有一列是字典列表,我需要将它们解析为新的列
- django-rest-framework - 自定义序列化程序中未定义 DRF 名称
- javascript - onclick 从数据库重新加载内容
- mysql - MySQL,特定语句中ON和WHERE之间的功能差异
- java - 在 Java 中创建类类型的变量
- c++ - 如何修复“for”循环并没有停止