當前位置:首頁 » 電腦資訊 » c讀取txt文件為什麼亂碼

c讀取txt文件為什麼亂碼

發布時間: 2022-05-16 15:47:36

⑴ c語言讀取txt文件數據時最後有一串亂碼怎麼辦

原因很簡單:把while(!feof(fp))中的!feof(fp)改成1,然後在fscanf那一句後面加一句if(feof(fp)) break;就可以了。因為feof這個函數要在邏輯上緊跟在「讀操作」語句後才能正確生效,而你的寫法在第一次進入while時還沒有讀文件,feof(fp)判斷什麼?就是這里造成了最後文件越界了還當作正常數據在處理,當然就是亂碼了……還有個寫法就是把fscanf也寫在while的()中,用逗號分開再寫!feof(fp),while的體里就不再寫fscanf了。這樣邏輯很淺析。不過你的fscanf語句太長,寫在()中不好看。有興趣你可以試一下。

⑵ C語言讀入寫出文件,寫出文件時出現個別亂碼。

fread()

fwrite()
用於2進制文件讀寫。
也就是說,你打開文件時,無論讀還是寫
要有選項
b,
例如
"rb","wb".
文本文件,按2進制方式打開,就會按2進制方法處理。
改正你的
fopen
里的
選項,就可解決問題。

⑶ C語言中指針讀寫文件,問什麼記事本都是亂碼,怎麼改呢

從代碼看,在Windows平台是有大概率會亂碼,假如你的商品信息數組里存放了換行就一定會亂碼。

主要問題在文件的打開方式不對,fread, fwrite函數最好以二進制模式打開文件,即打開方式加上b,即(rb, wb)。在unix/Linux系統應該沒問題。以下是問題解釋:

二進制和文本模式的區別

1.在windows系統中,文本模式下,文件以""代表換行。若以文本模式打開文件,並用fputs等函數寫入換行符" "時,函數會自動在" "前面加上" "。即實際寫入文件的是"" 。

2.在類Unix/Linux系統中文本模式下,文件以" "代表換行。所以Linux系統中在文本模式和二進制模式下並無區別。

(3)c讀取txt文件為什麼亂碼擴展閱讀

ffopen為C語言編程中所需的一個常用語言,多數用來打開文件。其調用的一般形式為:文件指針名=fopen(文件名,使用文件方式);其中,『』文件指針名」必須是被說明為FILE 類型的指針變數,文件名」是被打開文件的文件名;「使用文件方式」是指文件的類型和操作要求。「文件名」是字元串常量或字元串數組。

基本介紹函數功能:打開一個文件函數原型:FILE * fopen(const char * path,const char * mode);相關函數:open,fclose,fopen_s,_wfopenfopen所需庫:返回值:文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno 中。一般而言,打開文件後會做一些文件讀取或寫入的動作,若打開文件失敗,接下來的讀寫動作也無法順利進行,所以一般在fopen()後作錯誤判斷及處理。

參數說明:參數path字元串包含欲打開的文件路徑及文件名,參數mode字元串則代表著流形態。

mode有下列幾種形態字元串:

r 以只讀方式打開文件,該文件必須存在。

r+ 以可讀寫方式打開文件,該文件必須存在。

rb+ 讀寫打開一個二進制文件,允許讀寫數據。

rw+ 讀寫打開一個文本文件,允許讀和寫。

w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。

w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。

a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)

a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)

wb 只寫打開或新建一個二進制文件;只允許寫數據。

wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。

⑷ c讀文件亂碼

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

⑸ 我的c程序哪錯了,為什麼讀文件顯示的是亂碼

while( ( c = fgetc(fp) != EOF ) )
這里錯了。

( c = fgetc(fp) != EOF )外面這個括弧是多餘的,括弧不該打在這兒,而應該是
( c = fgetc(fp) ) != EOF
因為!=的優先順序比賦值號=高,你之前的寫法,真正求值順序相當於
c = (fgetc(fp) != EOF),所以直到fgetc讀到文件末尾之前,c的值都是1,因為fgetc返回的值不等於EOF,但是當fgetc讀到文件末尾的時候,
(fgetc(fp) != EOF)的值就是0,while循環退出,但是你要注意,c的值也變成0了。這樣到你後面的do...while的測試c != EOF就衡成立,因為EOF在stdio.h裡面定義的值不是0,然後就死循環了。我對你的兩層循環作了一點小小的改動,那樣輸出的格式會和txt文件裡面的保持一致。如下

do
{
i = 0;
while((c = fgetc(fp)) != EOF && c != '\n')
{
letter[i] = c;
i++;
}
letter[i++] = '\n';
letter[i] = '\0';
printf("%s", letter);
}while(c != EOF);

⑹ c語言關於文件的讀寫,為什麼輸出到文件上得到亂碼

windows下,編碼問題也有可能

  1. VC++6.0以上不存在這種可能

  2. GCC編譯器,輸入/出默認UTF-8,所以在windows下有問題,添加-finput-charset=GBK -fexec-charset=GBK


也有可能是輸出文件編碼問題,就是windows的記事本,不支持輸出的文件的編碼(MAC居多),你換一個編輯器看看,比如UltraEdit。這個是很正常的,比如你在文件里輸出一個換行符時,用記事本打開輸出文件,則發現變成空格了,實際是記事本讀不了

⑺ c語言 txt文件怎麼輸出老是亂碼

fwrite用於二進制寫入,怎樣寫對於數據來說都是亂碼,而對於字元則能正常輸出,而對於結構體,最好使用格式輸出函數fprintf()與fscanf(),這樣可以保證輸出的正確性,而fwrite函數時將內存中的二進制數據直接寫入文本文件,像11001010這樣的,所以文本文檔當然會顯示亂碼了 。

⑻ C語言中file函數鏈表讀取txt文本出現了亂碼

提3條修改建議,保證通過。

  1. 刪除fflush(stdin);。fflush(stdin)是清除標准輸入緩沖區,與文件讀入不搭界。

  2. 將fscanf(fp,"%d",&q->num);中的"%d"改為"%d ",d後的空格會吸收掉文件中的廣義空格。(前一句可改可不改,因為這一句會自動跳過廣義空格)

  3. 將print函數中的printf("%d %d",q->score,q->num);一句改為printf("%d %d ",q->score,q->num);,以使輸出第二個整數後回車,讓版面標准化。(前面輸出字元串時不需要,因為fgets函數會把 讀進來放在字元串的最後)

⑼ c語言程序讀入到txt文本文檔後,顯示為亂碼,請問要怎麼解決呢

編碼問題

可以參照https://..com/question/473658267.html

或者你把文件另存為另外的編碼

再不行你就只有自行網路,

學習編程要學會使用搜索引擎

⑽ c語言讀取文件數據亂碼

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

熱點內容
為什麼發票文件不存在 發布:2025-01-19 23:06:44 瀏覽:393
為什麼我蘋果手機下載不了東西 發布:2025-01-19 23:06:32 瀏覽:399
關於小孩子為什麼哭的視頻 發布:2025-01-19 23:06:30 瀏覽:754
蘋果香蕉汁為什麼是黑色的 發布:2025-01-19 23:06:23 瀏覽:974
為什麼漂發後顏色還是很深 發布:2025-01-19 23:01:06 瀏覽:330
男生的收入為什麼沒有女生高 發布:2025-01-19 23:01:04 瀏覽:761
為什麼尿放一段時間會變黑 發布:2025-01-19 22:56:13 瀏覽:851
為什麼直播的雪花秀那麼便宜 發布:2025-01-19 22:48:17 瀏覽:450
為什麼自己的電腦c盤直接滿了 發布:2025-01-19 22:47:29 瀏覽:806
讀vr為什麼要學maya軟體 發布:2025-01-19 22:47:28 瀏覽:455