use*_*836 4 c unix shell fgets strlen
我编写自己的UNIX Shell的任务之一.为了接收来自用户的输入,我使用fgets将输入捕获为字符串,但我不确定它是如何工作的.当我跑:
char command[50];
fgets(command, sizeof(command), stdin);
printf("Your Command: %s", &command);
int length = strlen(command);
printf("Length of String: %d\n", length);
Run Code Online (Sandbox Code Playgroud)
让我说我的输入是"退出".strlen说字符串是5个字符长,而不是4个字符.我想做这个:
if( (strcmp(command, "exit")) == 0 ){
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
但命令永远不会等于我想要它的字符串; 就像它有一个我不确定的未知角色.最后是空字符吗?如何更改if语句以检查用fgets捕获的用户输入是否等于"退出"?谢谢!
fgets将行终止符视为有效字符.这是你收到的额外角色.
只command[strlen(command) - 1] = '\0';需要删除行终止符.那你就可以自由地做你所有strcmp的了.
| 归档时间: |
|
| 查看次数: |
8113 次 |
| 最近记录: |