- 我使用
scanf("%c",...)
来获取用户的输入。 - 我只需要一个字符,如'1'或'Q'。
- 如果用户输入2,5-或,
scanf
可以得到第一 字符。其他字符留在缓冲区中。但是我不想要几个字符的第一个字符,我只需要 需要单个字符 - 我不知道如何处理这个条件然后打印出错信息 。
任何人都可以帮我吗?我只需要一个字符,如果用户输入几个字符,如何打印错误信息?
scanf("%c",...)
来获取用户的输入。scanf
可以得到第一 字符。其他字符留在缓冲区中。但是我不想要几个字符的第一个字符,我只需要 需要单个字符任何人都可以帮我吗?我只需要一个字符,如果用户输入几个字符,如何打印错误信息?
#include <stdio.h>
int main(void){
char input;
if(scanf("%c", &input) == 1){
if(input != '1' && input != 'Q' || getchar() != '\n'){
fprintf(stderr, "input error!\n");
while(getchar() != '\n');//clear input
} else {
printf("your input is %c\n", input);
}
}
return 0;
}
这是行得通吗? (扫描一个字符串,而不是一个字符):
char buf[10];
printf("Enter a single character: ");
scanf("%s", buf);
if (strlen(buf) != 1)
printf("Error");
但我需要这些数字来比较,如果它是一个字符串,它不能被比较.. – happyeveryday
我不想的几个字符的第一个字符,我只需要一个字符...如果输入的是** ** 1,3,它应该打印一条错误消息。 – happyeveryday
@sakurababy这只得到单个字符。如果输入是** 1.388打印错误信息。如果输入是1,3,_scanf可以获得第一个字符。其他字符留在buffer._ – BLUEPIXY
我的意思是如果输入是** 1,3 **,我不希望scanf获得第一个字符,它应该打印一个错误信息并清除缓冲区。@ BLUEPIXY – happyeveryday