Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 结合使用fgets和strtok将输入转换为令牌_C_Stdin_Fgets_Strtok - Fatal编程技术网

C 结合使用fgets和strtok将输入转换为令牌

C 结合使用fgets和strtok将输入转换为令牌,c,stdin,fgets,strtok,C,Stdin,Fgets,Strtok,我正在读取来自不同文本文件的输入。这些文本文件是由空格、新行或空格与新行的组合分隔的整数。我想将这些字符串转换为整数,并将这些整数用于排序算法 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_

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

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;
这有什么问题,它只是打印每行的第一个元素。它不会在每行处理多个元素


提前感谢。

您需要使用
循环来处理所有令牌<代码>strtok
将在所有令牌结束后返回
NULL

示例:

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

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

buf
line
?对不起,这不清楚。buf是输入。行是我想要存储令牌的地方,这就是为什么创建一个标记来向我们展示是如此重要的原因。请编辑您的问题以包含一个问题。另外,请阅读,以及。
man 3 strtok
可能吗?
strtok()
函数将字符串分解为零个或多个非空令牌序列。在第一次调用
strtok()
时,应在str中指定要解析的字符串。在每个后续调用中,应解析同一字符串,str必须为
NULL
。我没有看到strtok()结果的循环。第一个错误是发布的代码没有编译!