gpt4 book ai didi

c - 使用 fscanf 读取序列化数据

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:25 25 4
gpt4 key购买 nike

我有一个 C 结构数组,我正在将它序列化到一个文件中,我需要再次将该数据检索到内存中。

movie list[50]; //array

typedef struct{
int code;
int year;
float price;
char title[50];
char director[30];
char description[255];
} movie;

序列化数据示例

1|1990|9.900000|Hello world|Foo bar baz|lorem ipsum bla bla|
34|1994|4.900000|lorem ipsum|lorem ipsum|lorem ipsum|
23|1993|5.100000|lorem ipsum|lorem ipsum|lorem ipsum|
.
.
.

为了序列化,我只是遍历数组并将每个属性 fprintf 到一行。

但是要读取数据,显然是行不通的

while( fscanf("%d|%d|%f|%s|%s|%s|",&list[i].code, &list[i].year, ...)!= EOF){
i++;
...
}

最佳答案

这行不通

sscanf(input,"%[ˆ|]|%[ˆ|]|%[ˆ|]",string1,string2,string3);

这个错误是如此微妙,以至于我花了将近 3 个小时才找到问题的答案:

sscanf(input,"%[^|]|%[^|]|%[^|]",string1,string2,string3);

问题可能是因为我在美国 macbook 上使用 美国国际英语 布局键盘。

这会导致 ^ 键 (Shift-6) 显示为重音 ^ 直到您按下一个辅音,它变成 â ê î ô û 或者如果你按空格键,它会将重音变成一个字符,我从来没有意识到这两个 ^^ 是不同的。

我不确定英语,但至少在葡萄牙语中,不是字符的 ^ 被称为抑扬音,用于辅音 â ê î ô û 以表示不同的发音。

因此,如果您使用的是美式键盘,则必须按 Shift+6,然后按空格键才能生成 ^

关于c - 使用 fscanf 读取序列化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15286100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com