C語言讀取檔案出現錯誤,讀取了兩遍而且有亂碼是什麼情況

2021-04-22 02:20:59 字數 3440 閱讀 7162

1樓:自我程式設計

程式執行兩邊,復肯定是**制問題。

資料對計算機bai而言就是2進製,你看du亂碼說明顯示zhi的時候沒有對應字元dao集,你把原檔案開啟看有亂碼沒。

或者你檔案有中文,你試試用全部英文和數字的檔案讀取。

另外,檔案有格式的話,你換fscanf和fprintf看看。

如下:為什麼c語言讀取檔案中的資料並輸出時有亂碼出現?本來輸入的是數字,然後從檔案中讀取後就變漢字 10

2樓:匿名使用者

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

c語言讀入寫出檔案,寫出檔案時出現個別亂碼。

3樓:匿名使用者

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;}

4樓:金色潛鳥

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

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

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

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

5樓:

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

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

6樓:匿名使用者

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

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

試試看!!

c語言讀取檔案資料亂碼

7樓:可以叫我表哥

參考**如下:

#include

#include

#include

int main()

return 0;}

8樓:匿名使用者

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

9樓:匿名使用者

給你乙個你參考下就行了

#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語言讀取檔案開頭出現亂碼的問題

10樓:匿名使用者

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

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

11樓:

sizeof(name)會是多少?

c語言,資料能寫入檔案,但是從檔案讀取資料的時候,出現了亂碼,如下**,求解答

12樓:濸海月明

在寫檔案部分的for迴圈裡做如下修改:(已編譯執行,成功)

for(i = 0; i < size; i++)

13樓:匿名使用者

逗號被當成name的一部分讀取了……建議還是用空格分開各項輸入吧,不要用逗號了……

c語言檔案操作讀取亂碼

14樓:匿名使用者

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

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

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

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

15樓:風雷雪電

錯誤一:沒有「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 中怎麼讀取shapefile格式的檔案

都可以用fopen,fread 和cfile file.read c 檔案讀取中,怎樣從檔案中讀取一種型別的資料 fscanf 函式可以從檔案按照你的格式讀取檔案資料但是,請必須保證你的檔案內容和你所期望讀取的資料格式是一致的如果你想從檔案讀取乙個 float 和乙個 int,可以像這樣子 floa...

flash匯入圖到庫顯示 讀取檔案時出現問題,或者多個檔案沒有匯入

換乙個版本吧,有時這個5.5不太好。我都不用了。可能是不支援的 格式,可以轉換一下格式再匯入。格式問題,你看是不是fl能匯入的格式 flash中匯入 時為什麼老是會出現乙個或多個檔案沒有匯入?20 acdsee開啟 另存為 再匯入就好了 看一下自己的 flash版本和ps版本是不是不一樣 不一樣的話...

C怎麼迴圈讀取ini檔案裡的資料資料在域下

class inireadwrite 下面完成和上面迴圈一樣的內容 string temp system.text.encoding.default.getstring buffer temp temp.replace 0 temp temp.trimend string arrstring tem...