我正在通过ctype.h库提供的一系列功能来运行用户输入,但是scanf不适用于空白。
由于无法将scanf用于空格,因此我相信fgets()应该是我要寻找的,但是不确定我将为它使用的最后一个参数。任何建议,将不胜感激!
#include <stdio.h>
#include <ctype.h>
int main(void) {
char a;
puts("Enter a character:");
//scanf("%s", &a);
fgets(a, 1, ??);
printf("isblank('%c') = %d \n", a ,isblank(a));
printf("isdigit('%c') = %d \n", a ,isdigit(a));
printf("isalpha('%c') = %d \n", a ,isalpha(a));
printf("isalnum('%c') = %d \n", a ,isalnum(a));
printf("isxdigit('%c') = %d \n", a ,isxdigit(a));
printf("islower('%c') = %d \n", a ,islower(a));
printf("isupper('%c') = %d \n", a ,isupper(a));
printf("tolower('%c') = %d \n", a ,tolower(a));
printf("toupper('%c') = %d \n", a ,toupper(a));
printf("isspace('%c') = %d \n", a ,isspace(a));
printf("iscntrl('%c') = %d \n", a ,iscntrl(a));
printf("ispunct('%c') = %d \n", a ,ispunct(a));
printf("isprint('%c') = %d \n", a ,isprint(a));
printf("isgraph('%c') = %d \n", a ,isgraph(a));
return 0;
}
输出应该看起来像这样
Enter a character:
C
isblank('C') = 0
isdigit('C') = 0
isalpha('C') = 1024
isalnum('C') = 8
isxdigit('C') = 4096
islower('C') = 0
isupper('C') = 256
tolower('C') = 99
toupper('C') = 67
isspace('C') = 0
iscntrl('C') = 0
ispunct('C') = 0
isprint('C') = 16384
isgraph('C') = 32768
程序应采用单个字符,并通过一系列函数将其转换为整数。
fgets()
的第一个参数必须是一个缓冲区,可以容纳整个输入行。
int main(void) {
char a;
char line[100];
puts("Enter a character:");
fgets(line, sizeof line, stdin);
a = line[0];