求救关于字符输入后缓冲区的问题
本帖最后由 旭日东升 于 2011-4-23 17:01 编辑做了一题课后题,发现输入中文和连续输入2次答案(比如第一题连输2次11,而且我发现用指针一维数组也是这种情况)都会造成预期以外的结果,虽然知道和回车键有关,但我对缓冲区的理解不够,希望小甲鱼老师能啰嗦啰嗦下。:$#include <stdio.h>
int compare(char input, char key) //比较函数,输入等于答案则返回1,错误返回0
{
if(input == key)
{
return(1);
}
else
{
return(0);
}
}
int chuti(int i) //出题函数
{
char input; //声明输入变量
char key; //声明答案变量
switch(i)
{
case 1:printf("1.多出各一半: "); key = '1'; break;
case 2:printf("2.闭着口,却在笑: "); key = 'a'; break;
case 3:printf("3.五口人说话: "); key = '语'; break;
case 4:printf("4.以来就有学生: "); key = '帅'; break;
case 5:printf("5.学上段,会下段: "); key = '尝'; break;
case 6:printf("6.挖西边,补东边: "); key = '扑'; break;
}
input = getchar(); //给输入变量赋值
getchar(); //清空缓存
return(compare(input, key)); //将比较函数返回的值再次返回
}
void main()
{
int i;
printf("欢迎进入猜字谜游戏\n");
for(i = 1; i <=6; i++)
{
for( ; 1; )
{
if(chuti(i) == 1)
{
printf("你太有才了!进入下一题。\n");
break;
}
else
{
printf("差一点!你一定行的!\n");
}
}
}
printf("恭喜你闯关成功!你真的太厉害了!\n");
} 回复 nbceshi 的帖子
中文是两个字节, gatchar()是一次读取一个字节,个人理解。 本帖最后由 nbceshi 于 2011-4-23 15:14 编辑
我想问题也许出在chuti()这个函数里的char key;上了,因为答案是中文2个字符,成字符串了,不过又有新问题了void main()
{
char i;
i="a";
printf("%s\n",i);
}这样就肯定有问题,但应该怎么后赋值给数组呢,一定要用循环吗?void main()
{
char i="a";
printf("%s\n",i);
}非得这样或用循环吗? :smile:smile:smile :smile:smile:smile
页:
[1]