c - 如何摆脱第二次按下进入C?

标签 c fgets

我有一些简单的代码,但遇到了以下问题 - 当我第二次调用函数 playerGuess() 时,它不允许我输入任何内容。看起来程序会自动按回车键。这是为什么?你能帮忙吗?

 int main(void)
 {


 void playerGuess();
 void playerGuess();
 }

 void playerGuess()
{
  char playerInput[2];
  int num, row, colum;
  printf("Enter a grid reference (a1 - j0): ");
  fgets(playerInput, 3, stdin);
  printf("%s", playerinput);
}

最佳答案

playerInput 太短。您需要输入空间、换行符和 nul。您的第一个 fgets() 在行尾之前停止,因为它超出了缓冲区空间(尽管您无论如何都会溢出缓冲区,因为您指定的大小大于实际数组)......然后是第二个fgets() 读取该行的其余部分(包含换行符)。

关于c - 如何摆脱第二次按下进入C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27631071/

相关文章:

c - 循环在 C 编程中不起作用

c - 从 fgets() 输入中删除尾随换行符

c - 在c中使用结构体和数组

c - 静态函数是否需要 C 中原型(prototype)的 static 关键字?

c++ - 覆盖 malloc 的问题

c - 数组参数上的 fgets()

c - 链表排序不重复

c - 如何模拟按键

C:使用 fread()/fgets() 而不是 fgetc() 逐行读取文本文件(具有可变长度行)( block I/O 与字符 I/O)

c - 如何从文本文件中读取格式化行并将信息保存在链表中? IN C