模拟C++';s>&燃气轮机;C中的运算符

模拟C++';s>&燃气轮机;C中的运算符,c,C,是否有一种简单的方法可以在C中使用fscanf或fgets来模拟这种行为: 假设我有一个结构如下的文件: struct foo { int first; char * second; double third; }; 整数\t字符串\t双精度 整数\s字符串\s双精度 在这种情况下,有没有一种方法可以应用fscanf在结构中输入它 我曾尝试在我的fscanf中使用多个正则表达式,但我没有完成我需要做的事情 我希望结构如下所示: struct foo { int

是否有一种简单的方法可以在C中使用
fscanf
fgets
来模拟这种行为:

假设我有一个结构如下的文件:

struct foo {
    int first;
    char * second;
    double third;
};
整数\t字符串\t双精度

整数\s字符串\s双精度

在这种情况下,有没有一种方法可以应用fscanf在
结构中输入它

我曾尝试在我的fscanf中使用多个正则表达式,但我没有完成我需要做的事情

我希望结构如下所示:

struct foo {
    int first;
    char * second;
    double third;
};

然后在这三个元素中使用fscanf

这就是如何使用fscanf读取结构的数据

struct foo Foo;
Foo.second = malloc(10); // max string size
fscanf(fp, "%d %s %lf", &Foo.first, Foo.second, &Foo.third);
其中fp是打开文件的文件*

请注意,
%s
将只扫描字符串直到下一个空白字符。如果希望将空白字符作为字符串的一部分,则需要重新定义分隔符的工作方式,并可能使用正则表达式或编写自己的解析函数


有关如何使用
fscanf()
的文档可供将来参考。这包括所有扫描字符串及其工作方式。

fscanf()
不接受正则表达式。使用
fgets()
阅读整行内容,然后将其解析为结构成员。记住
malloc()
字符串的内存!即使在C++中,你也必须编写一个函数来完成这个操作,所以只需编写一个函数来输入Stutt数据(并且一定要分配一些空间给<代码>第二版/代码>)。谢谢,你能告诉我SCANF中的条件是什么吗?比如:<代码> SCANF(“%[^ \n]”,STR);code>@Frows:这些转换(以
“%[”
开头的转换)称为扫描列表(或扫描集)。您需要先初始化
第二个
。谢谢,我自己刚捕捉到。哇,我用这种方式太复杂了,这很有效,谢谢。这只在字符串不包含空格的情况下才有效。@PaulGriffiths是的,但这是由输入
整数\s字符串\s double
的Frows描述暗示的。我想他不会无意中使用空格作为分隔符,并且仍然假设他可以在字符串中使用它。