【发布时间】:2014-02-12 20:30:43
【问题描述】:
我有这个 C 代码。如果我输入 LOL123 它应该显示它是大写的。而lol123它是小写的。检查 isupper 或 is lower 时如何使用 isalpha 排除非数字输入?
#include <stdio.h>
#define SIZE 6
char input[50];
int my_isupper(char string[]);
int main(){
char input[] = "LOL123";
int m;
m= isupper(input);
if( m==1){
printf("%s is all uppercase.\n", input);
}else
printf("%s is not all uppercase.\n", input);
return 0;
}
int my_isupper(char string[]){
int a,d;
for (a=0; a<SIZE); a++){
d= isupper(string[a]) ;
}
if(d != 0)
d=1;
return d;
}
【问题讨论】:
-
Lol123、loL123、lOl123 怎么样……
-
根据代码中的打印,这些都将被认为不是大写。提问者似乎很在意单词是否全部大写。
-
a<sizeof(string)是错误的。你可以改用for (a=0; string[a] ; a++) {。 -
您的 if 语句
if (isupper(input) == 1) ...不正确。is...函数(以及一般的大多数真/假函数)可以返回任何非零值来指示真值。正确的方式是if (isupper(foo)) { ... }或if (!isupper(foo)) { ... } -
@rullof LOl123 不应该全部大写。