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()结果的循环。第一个错误是发布的代码没有编译!