首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

大神帮忙解决思路

2013-02-27 
大神帮忙char Aprintf(请输入)scanf(%s,&A)while(A 2||A 1){printf(输入错误!请在)Sleep(50

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

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

热点排行