我需要一个有效的函数,将句子的第一秒和其余部分提取为三个变量。
问问题
20657 次
3 回答
11
简单方法:使用strtok()或 strtok_r 获取前两个标记,这会将它们从字符串中删除,因此字符串本身将是您要查找的第三个标记。
困难的方式:自己解析:(
Strtok 在 C 字符串库中,会改变你的原始字符串,所以要小心,如果需要保持原样,请先复制字符串。
可能的例子:
//#include <string.h>
char input[] ="first second third forth";
char delimiter[] = " ";
char *firstWord, *secondWord, *remainder, *context;
int inputLength = strlen(input);
char *inputCopy = (char*) calloc(inputLength + 1, sizeof(char));
strncpy(inputCopy, input, inputLength);
firstWord = strtok_r (inputCopy, delimiter, &context);
secondWord = strtok_r (NULL, delimiter, &context);
remainder = context;
printf("%s\n", firstWord);
printf("%s\n", secondWord);
printf("%s\n", remainder);
getchar();
free(inputCopy);
这应该可以正常工作,并且在原始字符串未变异的情况下是线程安全的。
于 2009-10-12T20:19:42.577 回答
2
于 2009-10-12T20:16:54.483 回答
2
您需要先定义分隔符。有一些问题strtok
(它修改了它的论点,例如,这可能会让你陷入困境)。我更喜欢读入字符串并运行一个自定义解析器,它的范围可能从sscanf
一个成熟的解析器。请发布更多详细信息。
于 2009-10-12T20:20:40.467 回答