我使用fgets()
函数将字符串存储在具有固定大小的结构中。stdin检索时的输入行大小
if(fgets(auth_data->user_id, USR_SIZE, stdin) == NULL)
EXIT_ON_ERROR_("Error on fgets function\n");
fflush(stdin);
我知道,所有具有更大的USR_SIZE -1
大小接收到的字符串被切断。我需要知道输入字符串的大小恰好(USR_SIZE -1
加'\0'
字符)。
为此,我可以拨打strlen
来检查字符串是否有长度< USR_SIZE -1
。但我如何检查原始字符串是否被fgets
删除。 在这两种情况下,我首先知道字符串的格式不正确。
此外,为了清除输入流真的需要fflush(stdin)
吗?
一个'read'调用将永远不会到达'EOF'而不用CTRL D强制它。我得到的是第主要过程在等待。还有另一种方式? –