2

我有一个字符串input,其中包含由空格分隔的单词。我想用它sscanf()来拆分单词,将每个单词存储input_word并打印出来,但我不确定如何将其放入 while 循环中。

这就是我所拥有的:

 char input[max];
 char split_input[max];

 /* input gets populated here */

 while (sscanf(input," %s", split_input)) {
     printf("[%s]\n", split_input);
 }

一旦序列中的最后一个单词被拆分,终止循环的条件是什么?

4

3 回答 3

4

可能无法涵盖所有​​角落案例。

#include <stdio.h>

int main(void)
{

    char *input = "abc def ghi ";
    char split_input[sizeof input];
    int n;

    while (sscanf(input," %s%n", split_input, &n) == 1) {
        printf("[%s]\n", split_input);
        input += n;
    }
}
于 2012-11-05T03:10:32.297 回答
4

你在那里使用了错误的功能。我可以建议strtok()吗?

在这里阅读strtok

于 2012-11-05T03:02:42.213 回答
0

我还建议使用strtok()函数。它标记您的字符串,并允许您在循环中一一提取单词。这是一个示例,假设input是您定义的字符串,我编写了一个函数来执行此操作。

#include <stdio.h>
#include <string.h>

int tokenize(char *input) {

    const char space[2] = " ";
    char *token = strtok(input, space);
    while (token != NULL) {
        token = strtok(NULL, space);
        printf("%s\n", token);
    }

    return 0;
}
于 2015-04-17T15:04:00.187 回答