我正在尝试使用 fgets
从 stdin
获取输入,使用大小为 128 的字符数组,该数组应该在读取“exit”时停止,但它没有
char cmd[128];
if(fgets(cmd,128,stdin)=="exit"){
//stuff
}
最佳答案
您不能将字符串与 ==
进行比较运算符(operator)。
你在这里实际做的是比较函数的返回值(成功时地址为cmd
,失败时为NULL
)与字符串文字的地址"exit"
。 .这永远不会是真的。
您应该检查 NULL
的返回值, 然后使用 strcmp
比较函数 cmd
反对"exit"
:
if ((fgets(cmd,128,stdin)) != NULL &&
(strcmp(cmd,"exit\n") == 0 || strcmp(cmd,"exit\r\n") == 0) {
...
请注意 fgets
如果读取一个换行符,该函数会在缓冲区中存储一个换行符,因此我们需要将其添加到要检查的字符串中。
关于使用标准输入的 C-fgets() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094072/