У меня есть этот код C. Если я ввожу LOL123, он должен отображаться в верхнем регистре. И lol123 это в нижнем регистре. Как использовать isalpha для исключения нечислового ввода при проверке isupper или under?
#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;
}
a<sizeof(string)
неправильно. вместо этого вы можете использоватьfor (a=0; string[a] ; a++) {
. - person wildplasser   schedule 22.01.2014if (isupper(input) == 1) ...
неверен. Функцииis...
(и большинство функций истинного/ложного вообще) могут возвращать любое ненулевое значение, чтобы указать истинность. Правильный путьif (isupper(foo)) { ... }
илиif (!isupper(foo)) { ... }
- person Brandin   schedule 22.01.2014isupper
уже используется стандартной функцией, которую вы пытаетесь использовать внутри своего кода. Поскольку в C нет перегрузки функций, это никогда не сработает. Если вы компилируете свой код с приличным уровнем предупреждений, ваш компилятор должен на вас расплакаться. - person Jens Gustedt   schedule 22.01.2014ctype.h
также принимаютint
в качестве формального параметра, поэтому, если вы не планируете иметь дело с high-asci (и крутить европейцев в процессе), вам следует преобразовать эти значенияchar
вunsigned int
, чтобы избежать расширения знака. . - person WhozCraig   schedule 22.01.2014my_isupper
. - person Brandin   schedule 22.01.2014