模拟C++';s>&燃气轮机;C中的运算符
是否有一种简单的方法可以在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
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描述暗示的。我想他不会无意中使用空格作为分隔符,并且仍然假设他可以在字符串中使用它。