我有這樣一個結構,我用資訊來堆積,我通過指標來做,做完后我把所有的資訊保存到一個名為person.txt的檔案中,然后在同一個程式中讀取它。
我遇到的問題是:
person.txt檔案中沒有任何有意義的文本,對我來說只是一堆未知的符號(我猜它是自動保存在位,但我不知道它為什么這樣做)。
.txt檔案并顯示結果后,關閉程式后,當試圖只使用代碼來讀取檔案時(意味著我把我不需要的代碼做成注釋),它顯示給我的是另一種東西,與我最初介紹的完全不同。
這里的代碼:
#include <stdio.h>/span>
#include <stdlib.h>
#include <string.h>
struct eu
{
char name[30] 。
int 年齡,體重,數字。
};
int main()
{
struct eu *Eu1, euptr; /span>
Eu1 = &euptr;
printf("Name & Surname:")。
scanf("%[^
]", Eu1->name)。)
printf("
")。)
printf("年齡:")。
scanf("%d", &Eu1-> age)。
printf("
")。)
printf("Weigt(kg):")。
scanf("%d", &Eu1-> weight);
printf("
")。)
printf("電話號碼:")。
scanf("%d", &Eu1-> number);
printf("
顯示。")。)
FILE *outinfo;
outinfo = fopen("person.txt", "a") 。
if (outinfo == NULL)
{
fprintf(stderr, "
出錯了!
")。)
}
fwrite(&Eu1, sizeof(struct eu),1, outinfo)。
fclose(outinfo)。
outinfo = fopen("person.txt", "r") 。
while(fread(&Eu1, sizeof(struct eu), 1, outinfo)
printf ("
姓名:%s
年齡:%d
體重:%d
電話。號碼:%d
", Eu1->姓名, Eu1->年齡, Eu1->體重, Eu1->號碼 )。
fclose (outinfo);
return 0;
}
uj5u.com熱心網友回復:
你把指標弄亂了。將整個結構保存到檔案中是可以的,這里是正確的作業代碼:
我把eu1 & euptr的變數換成了更符合邏輯的命名。
uj5u.com熱心網友回復:
fwrite將寫下你給它的原始資料,并達到你所指定的位元組數。你能夠寫出這個結構并讀回它,這正是你想做的,所有的作業都是按計劃進行。帶有單詞的 "正常 "文本檔案使用特定的編碼(通常是ascii或unicode),如果你想讓它可讀,你需要使用該編碼。
如果你希望它是可讀的,你將需要指定一種格式。一個非常簡單的格式是 CSV(逗號分隔值)。
因此,你可能會做這樣的事情
fprintf(outinfo, "%s,%d,%d", Eu1.name, Eu1.age, Eu1.weight, Eu1.number)。
//...
fseek(outinfo,0,SEEK_SET);//移到檔案的開頭。
fscanf(outinfo, "%s,%d,%d,%d", & Eu2.name, & Eu2.age, & Eu2.weight, & Eu2.number)。
這不涉及任何錯誤檢查,而且如果你的結構格式發生變化,將需要進行修改,但如果你有這方面的要求,將允許檔案是可讀的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/315486.html
標籤:
上一篇:指標算術和結構內的比較
