C語言,為什麼從檔案中讀取的內容後面有很多亂碼?誰能幫忙解決

2021-03-22 08:33:04 字數 3912 閱讀 8153

1樓:匿名使用者

你不能既讀到a中,又讀到file1中,只能讀到其中一個變數中.而且char a[5][10]不夠,要增大到與conformation相同,即char a[5][1024].下面修改為只讀到file1中:

//char a[5][10];

//fscanf(fp,"%s",&a[0]);

fscanf(fp,"%s",&file1.title);

//fscanf(fp,"%s",&a[1]);

//fscanf(fp,"%s",&a[2]);

fscanf(fp,"%s",&file1.time);

//fscanf(fp,"%s",&a[3]);

fclose(fp);

//printf("%s",a[0]);

printf("%s\n",file1.title);//加'\n' printf("%s",file1.title);

//printf("%s",a[1]);

printf("%s\n",file1.content);//printf("%s",file1.content);

//printf("%s",a[2]);

printf("%s\n",file1.time);//printf("%s",file1.time);

//printf("%s",a[3]);

printf("%s\n",file1.author);//printf("%s",file1.author);

c語言讀取txt檔案資料時最後有一串亂碼怎麼辦

c 為什麼讀取檔案會有亂碼

2樓:譯文澤爾瑞

typedef struct student //連結串列資料結構

student,*linklist;

c語言讀取檔案資料亂碼

3樓:可以叫我表哥

參考**如下:

#include

#include

#include

int main()

return 0;}

4樓:匿名使用者

把開啟方式改為 "r"以及把讀取資訊用fscanf吧,因為如果你是原先先把kk.txt寫好,然後再用你的程式開啟它的話,由於裡面有換行符以及空格等內容,除非開始你是用fwrite函式寫入的結構資訊,否則fread會把這些都作為資訊讀取的(也就是說它讀到一個struct student_type大小的資料就結束,而不管這裡面到底存放的是什麼,這個過程中讀到的可能不是一個完整的結構的資料),所以就會出現你所說的亂碼。

5樓:匿名使用者

給你一個你參考下就行了

#include

using namespace std;

void creat()//建立檔案並且輸入資訊fprintf(fp,"%-10s%-20s%-50s\n","姓名","**號碼","住址");

cout<<"請依次輸入姓名、**號碼、住址(以0結束)\n";

cin>>name;

while(strcmp(name,"0"))fclose(fp);

}void output()//輸出檔案的內容cout<<"\t通訊錄\n";

while(!feof(fp))

fclose(fp);

}int main()

while(!feof(fp))

fclose(fp);

}int main()

c語言關於檔案的讀寫,為什麼輸出到檔案上得到亂碼

6樓:匿名使用者

windows下,編碼問題也有可能

vc++6.0以上不存在這種可能

gcc編譯器,輸入/出預設utf-8,所以在windows下有問題,新增-finput-charset=gbk -fexec-charset=gbk

也有可能是輸出檔案編碼問題,就是windows的記事本,不支援輸出的檔案的編碼(mac居多),你換一個編輯器看看,比如ultraedit。這個是很正常的,比如你在檔案裡輸出一個換行符時,用記事本開啟輸出檔案,則發現變成空格了,實際是記事本讀不了

7樓:顧_城丶

你把id num也用char定義試試

c語言檔案操作讀取亂碼

8樓:匿名使用者

你的**想實現什麼功能呢?

從寫法上,看不出來想做什麼。

先寫了一個字元,然後讀下一個字元,一直讀到檔案尾,這樣自然是檔案裡面有什麼 就會顯示什麼了。

除了第一個字元是a外,後面的 都是檔案裡面本來的內容。

9樓:風雷雪電

錯誤一:沒有「wr」這種模式,如果既要讀,又要寫,那麼可以用」w+「。

錯誤二:雖然w+的檔案既允許讀,又允許寫,但讀和寫之間至少有一個移動檔案指標的函式:fseek,哪怕移動0格,也必須要用fseek函式。(參考文獻:c primer 第五版)

警告三:要確定作業系統為你的程式開放了c盤根目錄直接建立、修改檔案的訪問許可權。

參考程式:

void main()

fputc('a',fp);

fseek(fp,-1,seek_cur);

ch=fgetc(fp);

while(ch!=eof)

fclose(fp);

}fseek第二個引數是偏移量,-1表示往前挪一格。

fseek第三個引數是偏移位置,seek_cur是從當前處開始,seek_set是從檔案開頭開始,seek_end是從檔案末尾開始。

c語言中,為什麼呼叫檔案內的資料會出現亂碼

10樓:風雷雪電

先確認一下檔案是二進位制存的嗎?如果是,用記事本開啟它,應該是看不到數字的。不是說在記事本里輸入字元1 2 3 4,然後儲存成number.dat,程式就能正確讀取的。

二進位制讀取的時候fopen要寫成

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

rb表示binary:二進位制讀寫。

c語言讀取txt檔案開頭出現亂碼

11樓:

這是因為你的txt檔案的編碼和編譯器選擇的編碼不一致而導致的。

按你使用的作業系統不同,如果是windows,可以直接用記事本開啟檔案,選擇另存為——編碼——ansi,儲存後重新開啟。

如果是linux,用編輯器開啟檔案後另存為無bom的utf-8格式。一般來說可以解決問題。

解釋一下,在中文的windows系統中,選擇另存為ansi編碼,實際上是儲存為了gbk或類似的、當前win系統最相容的編碼方式。

在linux中,無bom的utf-8格式應該說是最常用最方便的編碼。

12樓:匿名使用者

你的123.txt檔案是utf8格式的檔案,前面三個是utf檔案bof碼0xefbbbf,用記事本開啟該檔案,另存為編碼為ansi檔案就可以了

13樓:匿名使用者

你好!!

程式執行過了,沒有你說的現象,你開啟txt檔案看看,是不是txt檔案有問題

為什麼我用c語言讀入的檔案是亂碼流?

14樓:沒有水印的鈔票

你**呢?檢查一下你的檔案識別符號是不是在讀之前就移到了檔案尾,一般都是這種情況,再不就是檔案本身寫入就有問題。

15樓:匿名使用者

啥檔案?讀寫函式不認識編碼格式的,要自己轉的

C 檔案讀取中,怎樣從檔案中讀取一種型別的資料

fscanf 函式可以從檔案按照你的格式讀取檔案資料但是,請必須保證你的檔案內容和你所期望讀取的資料格式是一致的如果你想從檔案讀取一個 float 和一個 int,可以像這樣子 float fvar 0.0f int ivar 0 假設 file 是一個有效的檔案指標 fscanf file,f d...

C 中怎樣將檔案的內容讀取到string型別的字串中。謝謝

fstream fs file.txt 建立個檔案流物件,並開啟 file.txt stringstream ss 建立字串流物件 ss fs.rdbuf 把檔案流中的字元輸入到字串流中 string str ss.str 獲取流中的字串 用檔案流 需要標頭檔案cstdio freopen a.in...

c 如何讀取dat檔案並將內容寫入記憶體中

1.對於程式來說,不管字尾名如何,檔案分為兩種型別 文字檔案和二進位制檔案。c語言裡有一系列檔案操作函式。區分文字和二進位制檔案,需要在開啟檔案時設定不同的控制符mode的變數即可。2.fopen的函式原型 file fopen const char path,const char mode fop...