每当我调用此函数时,它都会跳过其中的fgets语句。
void getString(char *str){ /* Read a string from the keyboard */
fprintf(stdout,"Please enter a string: ");
fgets(str,MAX_STRING_LEN,stdin);
}
这里是函数调用
if(strcmp(cmd,"new")==0){ /* new string command */
getString(current);
}
答案 0 :(得分:1)
你可能在程序的其他地方混合使用scanf()和fgets()。对所有输入使用fgets(),总是使用字符串,而不是必要时使用sscanf()将字符串转换为其他数据类型。
请参阅comp.lang.c常见问题解答,其中详细介绍了这一点:
答案 1 :(得分:0)
fprintf(3)的输出被缓冲。在尝试读取输入之前,您需要刷新缓冲区以强制提示。 stderr
频道通常是无缓冲的,因此您可以在不刷新的情况下写入该频道。