c - 结合使用 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_cleanup(l);
return 0;
这有什么问题,它只打印每行的第一个元素。它不处理每行多个元素。
提前致谢。
解决方案
您需要loop
处理所有令牌。strtok
将NULL
在所有令牌结束后返回。
例子:
while (fgets(buf, BUF_SIZE, stdin)) {
token = strtok(buf," \n");
while (token != NULL) {
printf("%s", token);
token = strtok(NULL," \n");
}
}
推荐阅读
- python - 网址错误:
- python - 熊猫的逻辑运算问题
- facebook - 测试 Facebook Messenger 应用程序以使其接收数据的正确方法是什么?
- html - 如果弹出窗口未确认角度,则保留单选按钮的原始值
- azure - 参数文件:模板验证失败:在 JSON 中找不到必需的属性“类型”
- apply - gsub 在 R 中的两个字符串之间查找和替换文本
- include - 当 clang 遇到包含时,是否可以启动任何操作、脚本或自动化?
- android - {Lint 错误}无法在事件处理中解析符号“View.OnClickListener”
- java - Android Firestore Query:获取集合中的文档数
- xml - 如何删除由于 IIB 中的空输入而生成的空 XML 标记 - ESQL