从标准输入读取输入

时间:2017-05-29 10:53:44

标签: c string

我想让一个终端运行一个进程,并且在运行时我想通过同一个终端向进程发送命令。该进程在while循环中运行并接受多个命令,其中一些命令具有可选参数。例如,发送一个' PRINT ID',其中ID是可选的。目前我有这个

char *command = malloc(100);
while(1) {
 fgets(command , 100 , stdin);
 if( strcmp(command, "PRINT") == 0 ) {
 /*do something*/

strcmp总是失败,我不知道C如何提取可选参数并在函数中使用它。

1 个答案:

答案 0 :(得分:1)

@BLUEPIXY是正确的。

根据fgets的文件:

从给定的文件流中读取最多count - 1个字符,并将它们存储在str指向的字符数组中。如果文件结束或找到换行符,则解析停止,在这种情况下str将包含该换行符。如果没有错误发生,请在写入str的最后一个字符后面的位置写入一个空字符。

所以,你要找的是strcmp(command, "PRINT\n") == 0

您可以使用fscanf来避免这种情况:

fscanf(stdin, " %100[^\n]", command);
if(strcmp(command, "PRINT") == 0) {
    /* do something */
}