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

2021-03-28 02:47:09 字數 2953 閱讀 5988

1樓:可以叫我表哥

參考**如下:

#include

#include

#include

int main()

return 0;}

2樓:匿名使用者

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

3樓:匿名使用者

給你一個你參考下就行了

#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語言讀取txt檔案資料時最後有一串亂碼怎麼辦

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

4樓:風雷雪電

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

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

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

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

c語言檔案操作讀取亂碼

5樓:匿名使用者

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

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

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

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

6樓:風雷雪電

錯誤一:沒有「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語言 讀取檔案時 除正常資料外 還有些亂碼

7樓:匿名使用者

必須確保這個檔案一定是用fwrite()函式寫入的,而且讀寫格式一定相同,即寫入語句是

fwrite((void *)student,sizeof(student),1l,fp);

8樓:匿名使用者

檔案末尾檢測出問題。

在c語言中檔案讀取操作時不能完全依賴於「while(!feof(fp))」的判斷

建議檢測讀出的資料,或用fgetc判斷檔案結束。

9樓:卿楓凌

因為你沒有判斷p->next是否還有資料,所以會多讀了一組隨機值

10樓:匿名使用者

資訊不太全,最好貼一下linklist實體與真正檔案whd裡面的內容

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語言讀取檔案中的資料並輸出時有亂碼出現?本來輸入的是數字,然後從檔案中讀取後就變漢字 10

14樓:匿名使用者

估計是你文字的儲存格式問題。重新另存為一份utf-8格式的檔案。utf-8編碼格式中的數字佔用一個位元組。而ansi或其他字元是佔用兩個位元組的。

c語言 讀取檔案時 除正常資料外 還有些亂碼

必須確保這個檔案一定是用fwrite 函式寫入的,而且讀寫格式一定相同,即寫入語句是 fwrite void student,sizeof student 1l,fp 檔案末尾檢測出問題。在c語言中檔案讀取操作時不能完全依賴於 while feof fp 的判斷 建議檢測讀出的資料,或用fgetc判...

有關C語言中檔案讀取的問題,關於C語言中的檔案讀取問題

search好像是要從檔案裡讀資料,然後輸出是吧,為什麼只看到了開啟檔案的部分,沒有看到讀資料的地方呢?開啟檔案之後就輸出了?關於c語言中的檔案讀取問題 需要一個fclose 函式,因為你的文字文件內東西太少沒有裝滿快取區,所以沒有輸出,使用fclose函式就可以把緩衝區內最後剩餘的資料輸出到磁碟檔...

c語言 檔案讀取 符 到字元陣列

可以通過fgetc函式,將字元讀取出來,並賦值到陣列的對應位置上。fgetc宣告在stdio.h中,其原型為int fgetc file fp 功能為從開啟的檔案fp中讀取一個字元,並返回。當讀取成功時,返回讀取到的字元的ascii碼值,否則返回eof。以下是逐個讀取字元,存於字元陣列,直到讀完整個...