我正在尝试使用stdin
使用fgets
使用大小为128的字符数组来获取输入,该字符数组在读取“exit”但它不会
char cmd[128];
if(fgets(cmd,128,stdin)=="exit"){
//stuff
}
答案 0 :(得分:3)
您无法将字符串与==
运算符进行比较。
您在这里实际做的是将函数的返回值(成功时cmd
的地址,失败时NULL
的地址)与字符串文字的地址进行比较{ {1}}。这永远不会成真。
您应该检查"exit"
的返回值,然后使用NULL
函数将strcmp
与cmd
进行比较:
"exit"
请注意,如果读取了一个换行符,if ((fgets(cmd,128,stdin)) != NULL &&
(strcmp(cmd,"exit\n") == 0 || strcmp(cmd,"exit\r\n") == 0) {
...
函数会在缓冲区中存储换行符,因此我们需要将该换行符添加到要检查的字符串中。