【发布时间】:2017-02-09 21:46:35
【问题描述】:
我注意到fscanf 不适用于确定的 C 编译器(Intel、Cray),所以我想使用fgets 来读取包含字符串和整数的简单输入文件
$cat input.txt
st 10 167 POP 456 244 NONE ENERGY
我可以做这样的事情
int main()
{
FILE *ptr_file;
char buf[1000];
ptr_file = fopen("input.txt", "r");
if (!ptr_file)
return 1;
for (int i = 0; i < 8; i++) {
fgets(buf, 1000, ptr_file);
printf("%s", buf);
}
fclose(ptr_file);
return 0;
}
读取文件,然后创建switch case 以将buf 的值存储在integer 或string 中。这显然不是很有效,我想知道是否有人有更好的主意。
【问题讨论】:
-
fgets会将您的输入转换为字符数组。您仍然需要从字符数组中提取数据。在 C 中,您可以在fgets之后使用sscanf。 -
你有一个结构
struct来保存相关值吗?还是您使用一组并行数组?您需要知道将要替换printf()的内容 — 您将如何解释和存储输入中的 8 个字段以供进一步处理。 -
@ThomasMatthews
sscanf似乎工作正常,但fscanf失败... -
“注意到 fscanf 不工作”缺少描述。失败的证据是什么?预期什么?
-
我的问题是,计划将所有这些信息存储在哪里?