C語言檔案操作中輸出結構體亂碼的問題

2022-03-09 23:39:45 字數 2877 閱讀 2233

1樓:ghos丶

你的out.txt的內容是你自己打進去的,不是用fwrite寫進去的,而且你結構中還包含了,什麼的,如果你的內容是用fwrite寫進去的就可以用fread讀了,

它們是要配合使用的。

2樓:匿名使用者

別取巧啦。。

struct student_type

stud[size];

問題在於它的內容比有效的內容大很多。所以讀入的時候,把下個記錄的內容也讀進來了。

用空格和逗號作分隔,一個一個讀取吧。

3樓:來自地質公園靈敏的廣玉蘭

好難啊 我自己也看不懂。。。

4樓:手機使用者

yo,加分了,給我留著

c 語言,檔案操作將結構體陣列用fwrite寫入檔案後,開啟時為什麼檔案中會是一堆亂碼?

c語言結構體檔案寫入亂碼.......

5樓:匿名使用者

fwrite是將記憶體中的資料不經轉換直接寫入檔案,所以檔案中儲存的是二進位制形式,當然看到亂碼了。

你可以試試:

fprintf(fp1,"%s%s%s%s%s%s",copy1.title,copy1.copies,copy1.

rental_duration,copy1.director,copy1.actor,copy1.

genre);

另外,輸入字串時,不用取地址。

scanf("%s%s%s%s%s%s",copy1.title,copy1.copies,copy1.

rental_duration,copy1.director,copy1.actor,copy1.

genre);

詳細可以看看

6樓:滿元修倫庚

1、最好用2進位制方法開啟檔案,用fwrite 寫檔案。讀時也用用2進位制方法開啟檔案,用fread讀.這樣,寫的時候按整個結構寫,讀也按整個結構讀,字串有空白也沒關係。

2、例程:

file *fp;

fp=fopen("my.dat","wb");

寫1個結構

for (i=0;i<寫10個結構

fclose(fp);

fp=fopen("my.dat","rb");

讀1個結構

for (i=0;i<讀 10個結構

fclose(fp);

關於c語言中結構體和檔案讀取輸出問題

7樓:

當然要錯 改成

fread(stu,sizeof(stu),1,fp);

一個讀資料是讀一條結構體的資料進去 不能分開讀

8樓:投機士

c語言中對結構體資料格式檔案進行讀取時,必須以二進位制格式開啟檔案,然後按結構體型別變數記憶體塊方式進行資料讀取,相關讀資料命令為fread()。

函式說明:

#include

size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);

從stream檔案流中,讀取nmemb個size大小的資料塊到ptr所指的記憶體buf中,返回讀取到的有效資料塊數。

如,有如下結構體定義:

typedef struct test

int num;

double score;

}strtest;

strtest data ;

file *fp = fopen("file.dat", "rb" ) ; //按二進位制格式開啟檔案

讀取一個資料塊到變數data中。

注意,當結構體中定義的變數有指標型別時,在儲存資料時,就不能按結構體進行儲存了。

因為,指標變數中儲存的是記憶體地址,而程式在不同環境執行時,所使用的記憶體地址是不同的,只儲存記憶體地址,不能把真正的資料儲存下來,所以,即使是正確讀取到檔案內容,也不能得到當時的結構體記憶體資料。因而,在儲存結構體資料時,要根據結構體型別變數特點採用正確的方法進行儲存,才能正確的讀取。

c語言 將結構體寫入檔案後讀取的問題

9樓:匿名使用者

寫完檔案後,fp指標要重置到檔案開頭,才可以,不用fclose();,fclose(fp)要最後才用

示例://程式示例 fwrite fread fseek

#include

#include

int main ()

fwrite(msg,strlen(msg),1,fp);//把字串內容寫入到檔案

fseek(fp,0,seek_set);//定位檔案指標到檔案開始位置

fread(buf,strlen(msg),1,fp);//把檔案內容讀入到快取

buf[strlen(msg)] = '\0';//刪除快取內多餘的空間

printf("buf = %s\n",buf);

printf("strlen(buf) = %d\n",strlen(buf));

return 0;}

C語言操作,C語言檔案操作

照你那樣說的插入是不太可能的,從底層看,檔案一般都是通過重寫插入刪除資料的。如果你要插入的話,就是把插入點之後的資料全都複製下來,然後寫上要插入的東西,然後再把複製的資料全部粘上。刪除也是一樣,把你要刪除的資料用後面的資料覆蓋上。無論什麼編輯器都是以這樣的原理實現的。可能它們用了這樣或那樣的演算法優...

c語言結構體別名定義問題,C語言結構體別名定義問題

typedef struct stu linklist 此處第一了一個型的型別,即struct stu 即指向結構體stu的指標 所以head的型別也就是struct stu head為一個指向stu結構體型別的指標。但是並沒有未其分配具體的空間。可以將一個已定義為stu結構體的指標賦給它。c語言給...

c語言結構體程式設計題,求大神,C語言結構體程式設計題,求大神!

根據題意 一 教師資訊定義為結構體,其成員年月也為結構體 可直接定義成兩個成員變數,本題沒有強制要求 婚姻狀態採用共用體型別。二 輸入資訊直接寫在main函式,實際軟體開發應單獨寫輸入函式,輸入驗證我只寫了性別和婚姻狀態的驗證,其餘成員的輸入驗證需要自己新增。實際開發,驗證也應單獨寫函式呼叫 三 輸...