我想要一个终端运行一个进程,并且在运行时我想通过同一终端向该进程发送命令。该进程在 while 循环中运行并接受多个命令,其中一些命令具有可选参数。例如,发送“打印 ID”,其中 ID 是可选的。目前我有这个
char *command = malloc(100);
while(1) {
fgets(command , 100 , stdin);
if( strcmp(command, "PRINT") == 0 ) {
/*do something*/
但是strcmp
总是失败,我不知道C如何提取可选参数并在函数中使用它。
最佳答案
@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 */
}
关于c - 从标准输入读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44240738/