大神帮忙
char A;
printf("请输入");
scanf("%s",&A);
while(A > 2||A < 1){
printf("输入错误!请在");
Sleep(500);printf(" 1 "); //500毫秒出现一个
Sleep(500);printf(" 2 ");
printf("之间进行选择\n");
fflush(stdin);
scanf("%d",&A);
}
return 0;
我要只能输入1 和2 输入其他都要错误 怎么改?例如 1aa是错误的
[解决办法]
用getline把所有输入都存下来
判断输入是'1'还是'2',错误的丢弃
把'1'或者'2'转成1/2备用
[解决办法]
char A;
printf("请输入");
scanf("%s",&A);
while(A > 2
[解决办法]
A < 1){
printf("输入错误!请在");
Sleep(500);printf(" 1 "); //500毫秒出现一个
Sleep(500);printf(" 2 ");
printf("之间进行选择\n");
fflush(stdin);
scanf("%d",&A);
}
return 0;
i think your code can fit your requirement!
[解决办法]
如果你说的1和2是整型,则可以这样改:
int A;
printf("请输入");
scanf("%d",&A);
while(A > 2
[解决办法]
A < 1)
{
printf("输入错误!请在");
sleep(500);printf(" 1 "); //500毫秒出现一个
sleep(500);printf(" 2 ");
printf("之间进行选择\n");
//fflush(stdin);
scanf("%d",&A);
}
如果是字符型,则这样改:
char A;
printf("请输入");
scanf("%c",&A);
while(A > '2'
[解决办法]
A < '1')
{
printf("输入错误!请在");
sleep(500);printf(" 1 "); //500毫秒出现一个
sleep(500);printf(" 2 ");
printf("之间进行选择\n");
//fflush(stdin);
scanf(" %c",&A);
}
[解决办法]
输入的A为char,while中,是和int比较的,显然不对。
方法1 : A > '2'
[解决办法]
A < '1'
方法2 : A > (2+'0')
[解决办法]
A < (1 + '0')
方法3 : char A; ---->int A;
[解决办法]
这里用的是fgets而不是getline。
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
int main()
{
char buffer[BUFSIZ] = "";
int choice;
printf("input your choice (1 or 2): ");
fgets(buffer, BUFSIZ, stdin);
if (buffer[strlen(buffer) - 1] == '\n')
buffer[strlen(buffer) - 1] = '\0';
if (strcmp(buffer, "1") == 0
------解决方案--------------------
strcmp(buffer, "2") == 0)
{
choice = atoi(buffer);
printf("your choice is %d\n", choice);
}
else
printf("you input something other than 1 or 2\n");
return 0;
}
[解决办法]
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
[解决办法]
我也碰到过这样的问题,现在知道怎样解决了,谢谢各位啦。