结合使用 fgets 和 strtok 将输入转换为标记

Using fgets in combination with strtok to transform input to tokens

我正在读取来自不同文本文件的输入。这些文本文件是整数,由 space、新行或 space 和新行的组合分隔。我想将这些字符串转换为整数,并将这些整数用于排序算法。

char *line = malloc(BUF_SIZE);
char *token;

struct list* l = list_init();

while (fgets(buf, BUF_SIZE, stdin)) {
    token = strtok(buf," \n");
    printf("%s", token);
}

list_cleanup(l);

return 0;

这有什么问题,它只打印每行的第一个元素。它不处理每行的多个元素。

提前致谢。

您需要 loop 才能处理所有令牌。 strtok 将 return NULL 一旦所有令牌都结束了。

示例:

while (fgets(buf, BUF_SIZE, stdin)) {
    token = strtok(buf," \n");

    while (token != NULL) { 
        printf("%s", token);
        token = strtok(NULL," \n");
    }
}