C - 我不明白为什么打印带有变量的函数值时输出不同

  • 本文关键字:函数 变量 输出 打印 明白 c getch
  • 更新时间 :
  • 英文 :


当我尝试直接使用 printf 打印 getk 函数时。它工作正常。但是当我将其存储到变量时,输出总是相同的。我正在尝试获取箭头键作为输入

我在代码块窗口 7 上使用 gcc。

int getk()
{
int ch;
ch = getch();
if (ch == 0)
{
ch = getch();
return ch;
}
return ch;
}
void main()
{
int a, b;
a = getk();
printf("%d %d", a, getk());
}

我希望在printf中的两种情况下输出相同,因为getk返回类型和变量a数据类型相同,那么为什么输出不同

在此代码片段中

a= getk();
printf("%d %d",a,getk());

函数getk被调用两次(在 assignemnt 语句和 printf 调用中)。第二次它可以读取例如存储在输入缓冲区中的换行符,在用户按下函数的先前调用中的键 Return 之后。

根据这个问题,箭头键返回 3 个字节,因此将结果存储在单个变量中是不够的。 因此,您必须使用数组或分析字符来获取箭头键:

#include <stdio.h>
int main()
{
int j;
char Input[3];
printf("Input: nr");
j = 0;
char Single = getch();
while(Single)
{
Input[j++] = Single;
Single = getch();
if(j > 2)
{
j = 0;
}
}
for(int i = 0; i < 3; i++)
{
printf("%d", Input[i]);
}
return 0;
}

最新更新