读书人

大神帮忙解决思路

发布时间: 2013-02-27 10:48:11 作者: rapoo

大神帮忙
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的返回值。

[解决办法]
我也碰到过这样的问题,现在知道怎样解决了,谢谢各位啦。

读书人网 >C语言

热点推荐