函数调用会跳过函数的语句

时间:2014-04-11 20:50:07

标签: c string function-call

每当我调用此函数时,它都会跳过其中的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);
}

2 个答案:

答案 0 :(得分:1)

你可能在程序的其他地方混合使用scanf()和fgets()。对所有输入使用fgets(),总是使用字符串,而不是必要时使用sscanf()将字符串转换为其他数据类型。

请参阅comp.lang.c常见问题解答,其中详细介绍了这一点:

http://c-faq.com/stdio/scanfinterlace.html

答案 1 :(得分:0)

fprintf(3)的输出被缓冲。在尝试读取输入之前,您需要刷新缓冲区以强制提示。 stderr频道通常是无缓冲的,因此您可以在不刷新的情况下写入该频道。