结合使用 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");
}
}
我正在读取来自不同文本文件的输入。这些文本文件是整数,由 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");
}
}