fgets()没有等待没有stdin溢出的输入?

时间:2015-02-26 07:54:29

标签: c buffer stdin fgets buffer-overflow

这可能是一件简单的事情,但经过几个小时的谷歌和调试后,我无法弄明白。基本上我基本上想要获得用户输入,然后另一个函数验证输入并返回TRUE或FALSE(如果为TRUE)或FALSE(如果输入是否良好...接受)。

我的代码是多个文件,所以我只会发布相关部分:

do {
   printf("Enter customers surname: ");
   fgets(userinput, sizeof(userinput), stdin);

} while (validCustData(datapos, userinput) != TRUE);

调试调试:使用code :: blocks debugger,它会跳过fgets()语句fgets()语句,并尝试验证导致崩溃的NULL指针NULL指针。我已经尝试了fflush(stdin)和fflush(stdin)以及我自己的readrestofinput()函数readrestofinput()函数来清除缓冲区。但没有任何工作。有什么帮助吗?

编辑:我现在有工作。 userinputNULL,但现在我修复了我有不同的错误。

0 764746A7 msvcrt!fgets() (C:\Windows\syswow64\msvcrt.dll:??) 
1 60758FC7 ?? () (??:??)
2 ?? ?? () (??:??)

Program received signal SIGSEGV, Segmentation fault.
In msvcrt!fgets () (C:\Windows\syswow64\msvcrt.dll)

0 个答案:

没有答案