我有一个字符串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);
}
一旦序列中的最后一个字被分割,终止循环的条件是什么?
答案 0 :(得分:4)
strtok()
吗?
请在此处阅读strtok
答案 1 :(得分: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;
}
}
答案 2 :(得分: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;
}