【发布时间】:2015-10-27 23:56:45
【问题描述】:
所以我想制作一个代码,您可以在其中找到字符串中大小写字母的数量(无空格) 所以我想要这样的东西:
input:
HEllO
Output:
2 3
所以我的代码是这样的:
#include<stdio.h>
int main() {
int upper = 0, lower = 0;
char ch[80];
int i;
printf("\nEnter The String : ");
gets(ch);
i = 0;
while (ch[i] != '') {
if (ch[i] >= 'A' && ch[i] <= 'Z')
upper++;
if (ch[i] >= 'a' && ch[i] <= 'z')
lower++;
i++;
}
printf("%d %d", upper, lower);
return (0);
}
代码有问题,但我找不到错误。有人可以修复它吗?谢谢。
【问题讨论】:
-
while (ch[i] != '')应该是while (ch[i] != '\0') -
还有什么问题?顺便说一句,
''是'\0'的同义词? -
@luk32 不,
''不是'\0'的同义词。这是语法错误,无法编译。 -
这不是您的问题的原因,但请注意您应该永远使用gets()。它不会传递缓冲区的长度,因此如果输入长度超过 79 个字符,它将溢出 ch 数组,导致未定义的行为。相反,使用 fgets(ch, sizeof(ch), stdin);请注意,与 get 不同,fgets 将在缓冲区中包含换行符(如果存在),但这对您的情况没有影响,因为 '\n' 不在 [A-Z] 或 [a-z] 中。