移动strchr指针后使用strtok

时间:2014-03-29 16:38:12

标签: c++ c strtok

我试图解析表单的字符串:

structure: something 2 3 4 5 6 7 10 242 12

我想要的是将整数值打印到文件中。现在,我可以使用strtok并基于空格分割字符串然后strcmp"结构:"和"某事"单词而不是将它们打印到文件中。但这些可以是任何单词,所以这只适用于这种特定情况。但它总是以

的形式出现
<word1> <word2> 1 2 3 4 n

我尝试按照使用strchr将指针移动到2前面然后在后续字符串上使用strtok来做某事,这样我就只能拆分整数。我做了一些事情:

char number[256];
char *pch;
// using strchr to navigate to second space in line,
// then use strtok to split numbers
pch = strchr(buf, ' ');
pch = strchr(pch + 1, ' ');

pch = strtok(buf, " ");
while (pch != NULL) {
    fprintf(outputFile, "%s\n", pch);
    pch = strtok(NULL, " ");
}

显然,这不起作用,只是打印出一行中的所有内容。增加strchr的尝试也可能是错误的,但我认为它会在它找到的第一个空格字符上增加,然后找到第二个空格(2之前的空格)。然后,我想从指针开始并在那之后继续讨论所有内容(尽管在这种情况下我只是重新分配指针)。

所以有可能在&#34;&#34;&#34;之后得到一串所有东西。然后运行strtok?

1 个答案:

答案 0 :(得分:3)

中使用pch代替buf
pch = strtok(buf, " ");

所以将该行更新为

pch = strtok(pch, " ");