關於C語言讀取檔案開頭出現亂碼的問題

2021-04-22 02:20:59 字數 3980 閱讀 2559

1樓:匿名使用者

怎麼寫進去的就怎麼讀,格式一定要保持一致!

最好是把整個工程源**檔案打包,給你看看才能知道具體原因。

2樓:

sizeof(name)會是多少?

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

3樓:

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

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

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

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

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

4樓:匿名使用者

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

5樓:匿名使用者

你好!!

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

c語言讀取txt檔案開頭第一個單詞後出現亂碼

6樓:

第一個空格的時候執行printf("%s ",a)這條語句,但是,a[20]沒有初始化,所以就會出現這問題

在while迴圈前面,memset()初始化一下a陣列應該就可以了

7樓:海鵬資料恢復

讀文字bai,我以前也試過du, 這樣可以可以. fgets是讀一行,會在zhi'\n'處停止. 我建議,以整行dao為單位

專,進行讀取.

file *pf = open("測試文字.txt", "rt");

char buf[2048]; //快取弄屬大點

while(fget(buf, 2048, pf))fclose(pf);

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、c語言標準庫提供了一系列檔案操作函式。檔案操作函式一般以f+單詞的形式來命名(f是file的簡寫),其宣告位於stdio.h標頭檔案當中。

例如:fopen、fclose函式用於檔案開啟與關閉;fscanf、fgets函式用於檔案讀取;fprintf、fputs函式用於檔案寫入;ftell、fseek函式用於檔案操作位置的獲取與設定。

2、例程:

#include

int a;

char b,c[100];

int main()

fscanf(fp1,"%d",&a);//從輸入檔案讀取一個整數b=fgetc(fp1);//從輸入檔案讀取一個字元fgets(c,100,fp1);//從輸入檔案讀取一行字串printf("%ld",ftell(fp1));//輸出fp1指標當前位置相對於檔案首的偏移位元組數

fputs(c,fp2);//向輸出檔案寫入一行字串fputc(b,fp2);//向輸出檔案寫入一個字元fprintf(fp2,"%d",a);//向輸出檔案寫入一個整數fclose(fp1);//關閉輸入檔案

fclose(fp2);//關閉輸出檔案,相當於儲存return 0;}

11樓:金色潛鳥

fread() 和 fwrite() 用於2進位制檔案讀寫。

也就是說,你開啟檔案時,無論讀還是寫 要有選項 b, 例如 "rb","wb".

文字檔案,按2進位制方式開啟,就會按2進位制方法處理。

改正你的 fopen 裡的 選項,就可解決問題。

12樓:

應該是在 fread之後 fwrite之前加上一句話 buffer[isize] = '\0';

出現 屯 的原因,是沒找到結束符.

13樓:匿名使用者

buffer = (char*)malloc(sizeof(char)*( lsize +1)); //修改這一

句zeromemory(buffer ,sizeof(char)*( lsize +1)); //緊隨其後加入這一句

試試看!!

c語言讀取檔案資料亂碼

14樓:可以叫我表哥

參考**如下:

#include

#include

#include

int main()

return 0;}

15樓:匿名使用者

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

16樓:匿名使用者

給你一個你參考下就行了

#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語言檔案讀寫問題,在檔案裡隨便寫一個字串,為什麼讀出來之後是亂碼

17樓:匿名使用者

我表示今天同樣的問題,最後發現是檔案流中的偏移量的問題。造成的。呼叫fseek()將偏移量弄到檔案開頭,就成了

18樓:

沒加結束符卻當作字串用!亂碼已經是最好的結果了!read,只是讀出一定數量的資料,並沒有義務給你的資料加字串結束符!

c語言,從檔案中讀取單連結串列並輸出

需求有點不清晰,你要從檔案裡取什麼東西出來?我改了從txt取每一行的字串出來,記錄在你的連結串列,你參考一下 include stdafx.h include stdlib.h intmain phead inti file fp fopen d text.txt rb 一個有內容的txt文字,自己...

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

你的out.txt的內容是你自己打進去的,不是用fwrite寫進去的,而且你結構中還包含了,什麼的,如果你的內容是用fwrite寫進去的就可以用fread讀了,它們是要配合使用的。別取巧啦。struct student type stud size 問題在於它的內容比有效的內容大很多。所以讀入的時候...

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

你 呢?檢查一下你的檔案識別符號是不是在讀之前就移到了檔案尾,一般都是這種情況,再不就是檔案本身寫入就有問題。啥檔案?讀寫函式不認識編碼格式的,要自己轉的 c語言這樣寫為什麼輸出到檔案的是亂碼?求指教!真是大哥,我告訴你為什麼因為我也遇到過你用fprintf和fscanf語句進行檔案的讀取和儲存,絕...