我的isupper函数总是说它不是上层

hel*_*urf 1 c

我似乎无法弄清楚为什么我的输出只有一倍.

#include<stdio.h> 
#include<stdlib.h>
int my_isupper(int c);
int my_tolower(int c);

int
main(int argc,char *argv[]){
int c;
printf("Enter alphabet:");
scanf("%d",&c);
if ((c<='A' && c>='Z')||(c<='a' && c>='z')){
    printf("Error: Please type a alphabet\n");
    exit(EXIT_FAILURE);
}
if (my_isupper(c)==0){
   printf("isnotupper");
}
else{
   printf("is upper");
}
return 0;
}
int my_isupper(int c){
if(c>='A' && c<='Z'){
   return 1;
}
else {
   return 0;
}
}
Run Code Online (Sandbox Code Playgroud)

输出始终为"Isnotupper".可能是一个简单的错误.我是c编程的新手.如果您有关于调试的任何提示,请告诉我,以便我不会打扰任何人可以自我纠正的事情.谢谢!

Gop*_*opi 5

int c;
printf("Enter alphabet:");
scanf("%d",&c);
Run Code Online (Sandbox Code Playgroud)

应该

char c;
printf("Enter alphabet:");
scanf("%c",&c);
Run Code Online (Sandbox Code Playgroud)

您需要扫描字母而不是整数.根据您的代码,您希望用户输入字母表,如果您输入字母表scanf()(前一个%d)将失败.所以总是检查scanf()返回值.

if(scanf("%c",&c) == 1)
//Do you stuff
else
//Throw an error
Run Code Online (Sandbox Code Playgroud)