是否有一种简单的方法可以在C中使用fscanf
或fgets
来模拟此行为:
假设我有一个结构如下的文件:
Integer \ t String \ t double
Integer \ s String \ s double
有没有办法在这种情况下应用fscanf将其输入struct
?
我曾尝试在我的fscanf中使用多个正则表达式,但我未能完成我需要做的事情。
我希望结构看起来像这样:
struct foo {
int first;
char * second;
double third;
};
然后在这3个元素中fscanf
。
答案 0 :(得分:2)
这是使用fscanf读取结构数据的方法。
struct foo Foo;
Foo.second = malloc(10); // max string size
fscanf(fp, "%d %s %lf", &Foo.first, Foo.second, &Foo.third);
其中fp是打开文件的FILE *。
请注意,%s
只扫描字符串直到下一个空白字符。如果要将空格字符包含在字符串中,则需要重新定义分隔符的工作方式,并可能使用RegEx或编写自己的解析函数。
为了将来参考,可以找到有关如何使用fscanf()
的文档here。这包括所有扫描字符串及其工作方式。