gpt4 book ai didi

c - strtok 的段错误

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

#include<stdio.h>
#include<string.h>
int main(){
char path[] = "/fs/lost+found";
char* temp;
temp = strtok(path,"lost+found");
while(temp != NULL){
printf("\n %s \n",temp);
temp = strtok(path,"lost+found");
}
return 0;
}

我想提取字符串lost+found。上面的程序进入无限循环并打印分隔符“lost+found”之前的“/”

[root@rs]# ./a.out段错误

最佳答案

您犯了两个错误(您可以从 here 轻松发现)。

  1. strtok() 将一个分隔符作为第二个参数。在您的情况下,此分隔符不是 lost+found 而是合理的 /

  2. while block 内,strtok 函数的第一个参数必须为 NULL 才能使函数继续扫描先前的位置函数调用成功结束。

最后,您必须使用 strcmp() 来发现已处理的 token 是否是您要查找的字符串。

所以:

 ...
while (temp != NULL) {
if (strcmp("lost+found", temp) == 0)
printf ("%s\n", temp); // found

temp = strtok (NULL, "/");
}
... // not found

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

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