我必須做這個練習:
簡短說明:
讀取檔案,并將資訊存盤在指標指向的結構中。
長解釋:
我有一個結構“人”,它包含: char name[256]; 無符號整數年齡。
struct person {
char name[256];
unsigned int age;
};
我必須實作這個功能:
void person_read (FILE *f, struct person *pp);
我必須閱讀具有這種格式樣式的資訊:
<person's name> <whitespace> <age>
<person's name> <whitespace> <age>
<person's name> <whitespace> <age>
<person's name> <whitespace> <age>
并將每個資料存盤在此指標指向的結構中。
問題是我不知道如何讀取人名,跳過空格然后讀取年齡。如何設定這樣的閱讀功能:1)閱讀人名,2)跳過空格,3)閱讀年齡?
fgetc() 函式不是一個解決方案,因為它只讀取 1 個字符,并且一個人的名字沒有 1 個單個字符。另一方面, fscanf() 函式讀取所有內容。
我的想法是使用 1)讀取,2)檢查,3)使用
- 讀取一個字符,檢查它是否不是空格,如果是,則存盤在結構的陣列名稱中。(如果是真的,這意味著在陣列中我有完整的人名)。
- 一遍又一遍地閱讀,依此類推,直到到達一個空白。然后跳過空格。
- 讀取年齡,并將其存盤在結構中(無符號整數年齡)。
但我認為我把作業復雜化了。有沒有更簡單的方法?
uj5u.com熱心網友回復:
規范的解決方案是:
int r = fscanf(f, "%5s %u\n", p->name, &p->age);
p
你的人指標在哪里。您想檢查r
是否2
在這種情況下,以便您擁有兩個欄位的有效資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/470649.html