在 C 中使用 Enter 键停止用户输入



我正在尝试编写一个使用 fgets 接收字符串的程序,但由于某种原因我无法让它通过用户输入阶段。一旦用户输入"空行",输入应停止,即。回车键 ((,但即使按下此键,循环也会继续。

这是我代码中存在问题的部分:

char array[100][256];
for (int i = 0; array[i] != 'n'; i++)
{
fgets(array[i], 256, stdin);
}

100 和 256 分别表示预期的最大行数和字符数。

有谁知道我哪里做错了?

这是您的代码,只需最少的更改,注释中的解释即可修复。请注意,这不是解决问题的好方法,例如,长线可能不会按照您想要的方式运行(它们将在几行array处拆分(。

char array[100][256];
memset(array, 0, sizeof array); // initialize the memory
int i = 0;
while(i<100) // avoid overflow of lines, also while may be clearer than for loop
{
if(!fgets(array[i], 256, stdin)) break; // detect read failure
if(array[i][0] == 'n') break; // got empty line
// Note [0] above to test first char of line i
++i;
}
if (i==100) { /* too many lines */ }
else if (array[i][0] == 0) { /* read failure */  }
else {  /* indexes 0...i-1 contain data, index i contains empty line */ }

最新更新