gpt4 book ai didi

c - strtok(NULL, ) 段错误

转载 作者:行者123 更新时间:2023-11-30 20:40:47 25 4
gpt4 key购买 nike

一段代码的输入是:

initfs /home/bin/usr/a.txt 1000 100

代码如下:

printf("Enter a command\n");
scanf("%99[0-9a-zA-Z ]s", userInput);
printf("%s\n", userInput);
command = strtok(userInput, " ");
filePath = strtok(NULL, " ");

userInput中,存储“initfs/home/bin/usr/a.txt 1000 100”并在变量command中,存储了“initfs”。但是如果我打印 filePath ,则会出现段错误。它应该打印 "/home/bin/usr/a.txt"

可能是什么问题?

最佳答案

一般来说,对于解析键盘输入,我发现它比使用 fgets(或 getline,如果你喜欢)然后从那里解析它。例如:

char userInput[1024];
while (fgets(userInput, 1024, stdin) != NULL) {
handleInput(userInput);
}

...
void handleInput(char *userInput)
{
char *command, *filePath;
command = strtok(userInput, " ");
filePath = strtok(NULL, " ");
...
}

直接在用户输入上使用 scanf 太挑剔了,而且很容易对输入数据的微小变化感到困惑。

关于c - strtok(NULL, ) 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20333720/

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