[英]read serialized data using fscanf
我有一個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上使用US International English
布局鍵盤。
這導致^
鍵(Shift鍵6),顯示為一個口音ˆ
你按下一個輔音則轉為â ê î ô û
或者如果你按下空格鍵它打開口音角色,我從來沒有意識到這ˆ^
是不同的。
我不確定英語,但至少在葡萄牙語中,不是一個字符被稱為旋風口音,用於輔音toû來代表不同的發音。
因此,如果您使用美式鍵盤,則必須按Shift + 6然后按空格鍵才能生成^
“明顯不起作用”......當你閱讀函數的手冊頁時: - (。
%s
格式在到達|
時不會停止讀取字符串 ...如果你查看fscanf文檔,你會看到另一種格式指令,允許你控制哪些字符被讀入字符串而不是終止轉換....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.