我继续收到[链接器错误] C:\ Users etc和collect2:我在程序中返回了1个退出状态代码错误,但我没有看到它有什么问题。这是我的计划:
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main (){
int vowels = 0, cnsnts = 0;
int i, length;
char string[100];
printf("Enter sentence:");
gets(string);
length = strlen(string);
for(i = 0; i < length; i++){
switch(toUpper(string[i])){
case 'A':
vowels++;
break;
case 'E':
vowels++;
break;
case 'I':
vowels++;
break;
case 'O':
vowels++;
break;
case 'U':
vowels++;
break;
default:
cnsnts++;
}
}
printf("The number of vowels are %d.\n", vowels);
printf("The number of consonants are %d.\n", cnsnts);
system("pause");
return 0;
}
答案 0 :(得分:5)
更改
toUpper(string[i])
到
toupper(string[i])
添加<ctype.h>
标题并打开编译器警告。
答案 1 :(得分:1)
答案 2 :(得分:0)
您必须#include <ctype.h>
并错误地将u
中的upper
大写。您的开关也可以稍微降低
switch(toupper(string[i])) {
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
vowels++;
break;
default:
cnsnts++;
}
这种风格利用了堕落。如果案例未以break
(或return
,continue
或goto
)结尾,则会在其下方输入案例。这将继续,直到命中控制流改变关键字。上面的开关在功能上与原件相同,但要短得多。
您还可以考虑在string[i]
isalpha
是否为switch
的字母
if (!isalpha(string[i])) continue;