好吧,我确定我在这里遗漏了什么,但我不知道它是什么,我希望有人能帮我弄清楚。
我正在从命令行读取输入,并正在编写一个使用 fgetc() 执行此操作的函数。然而,函数中看似表面上的变化导致其行为完全不同。
这是 main() 函数:
while(1)
{
char* cmd = malloc(sizeof(char) * 80);
printf("Enter command: ");
read_flush(cmd, 80);
printf("%s\n", cmd);
free(cmd);
}
这是 read_flush() 的版本之一:
int read_flush(char* buffer, int count)
{
int i, c;
for(i = 0; i < count; i++)
{
c = fgetc(stdin);
if(c == '\n' || c == EOF)
return i;
buffer[i] = (char)c;
}
return i;
}
这个很好用。你输入输入,它会把它吐出来。 然而,下一个版本会导致 main 一遍又一遍地打印“Enter command:”,而不给用户输入的机会。
int read_flush(char* buffer, int count)
{
int i, c;
while(i < count)
{
c = fgetc(stdin);
if(c == '\n' || c == EOF)
return i;
buffer[i] = (char)c;
i++;
}
return i;
}
我在这里缺少 fgetc() 的哪些微妙之处?
最佳答案
尝试在您的第二个read_flush
实现中初始化i
。
关于c - 从 fgetc() 读取输入并使用 printf() 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407561/