gpt4 book ai didi

c - strtok 最后返回 null

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:11 24 4
gpt4 key购买 nike

我正在编写一个带有“echo”命令的 shell。例如,如果用户输入“echo hello world”,shell 会打印出“hello world”。

我的代码如下。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

int MAX_INPUT_SIZE = 200;
char input[MAX_INPUT_SIZE];
char *command;

printf("shell> ");
fgets(input, MAX_INPUT_SIZE, stdin);

//find first word
char *space;
space = strtok(input, " ");
command = space;

// printf("command: %s\n",command);

//echo command
if (strncmp(command, "echo", MAX_INPUT_SIZE) == 0) {
while (space != NULL) {

space = strtok(NULL, " ");
printf("%s ", space);
}

}

return (EXIT_SUCCESS);

}

当我运行它时,输入

echo hello world

shell 打印出来

hello world
(null)

我很困惑为什么要打印 (null)。有什么想法吗?

提前感谢您的宝贵时间!

最佳答案

修复如下:-

if (strncmp(command, "echo", MAX_INPUT_SIZE) == 0) {
space = strtok(NULL, " "); //eat the "echo"
while (space != NULL) {
printf("%s ", space); <----+
space = strtok(NULL, " "); |
// printf("%s ", space); -----+
}

}

关于c - strtok 最后返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com