使用stdin的C-fgets()不起作用

时间:2016-10-17 19:21:13

标签: c fgets

我正在尝试使用stdin使用fgets使用大小为128的字符数组来获取输入,该字符数组在读取“exit”但它不会

char cmd[128];

if(fgets(cmd,128,stdin)=="exit"){
    //stuff
   }

1 个答案:

答案 0 :(得分:3)

您无法将字符串与==运算符进行比较。

您在这里实际做的是将函数的返回值(成功时cmd的地址,失败时NULL的地址)与字符串文字的地址进行比较{ {1}}。这永远不会成真。

您应该检查"exit"的返回值,然后使用NULL函数将strcmpcmd进行比较:

"exit"

请注意,如果读取了一个换行符,if ((fgets(cmd,128,stdin)) != NULL && (strcmp(cmd,"exit\n") == 0 || strcmp(cmd,"exit\r\n") == 0) { ... 函数会在缓冲区中存储换行符,因此我们需要将该换行符添加到要检查的字符串中。