gpt4 book ai didi

c - 带分隔符的 strtok_r 标记

转载 作者:行者123 更新时间:2023-11-30 16:00:43 25 4
gpt4 key购买 nike

我发现了类似的帖子,但对于我关于 strtok_r 的问题没有明确的答案。

我正在使用 strtok_r 解析命令行以获取我需要通过带有标志的 execv 执行的命令,但是,出于测试目的,我打印出来。当尝试分隔多个字符(不包括空格)时,它工作得很好。但是在测试空白时,请使用以下代码:

void tokenize(char *str1)
{
char *token;
char *saveptr1;
int j, i;


const char *delim = " ";
i = strlen(str1);

for(j = 0; j < i; j++, str1 = NULL)
{
token = strtok_r(str1, delim, &saveptr1);
if(token == NULL)
break;

printf("save: %s\n", token);
printf("\n");
}
}

我得到以下测试字符串输出 (ls -al):

save: ls

最佳答案

如何读取该字符串?也许您正在使用以下内容读取字符串: cin >> string;或 scanf("%s", str);只读取第一个标记(“ls”)。

相反,您应该使用 cin.getline() 或 scanf("%[^\n]", str) 之类的方法读取整行。检查一下!

为什么用strtok_r而不是strtok?

关于c - 带分隔符的 strtok_r 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479889/

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