C語言中寫檔案,為什麼寫出的是亂碼呢,求大

2021-04-22 02:20:59 字數 2853 閱讀 7376

1樓:匿名使用者

fp=fopen("stud.dat","wb"); //你建立的是二進位制檔案,這種檔案用記事本開啟就是亂碼,這是正常的。

2樓:滄海雄風

寫檔案時就用的二進位制寫的 用記事本開啟時是ascii碼 所以看著亂碼 沒關係

還可以再正常讀進去的

平常都這樣用二進位制讀寫也沒什麼問題

c語言在txt檔案裡寫入一個數為什麼是亂碼啊

3樓:匿名使用者

int pt;

......

scanf("%d", &pt);

fputs(&pt, j); //把pt所在記憶體中的資料當作字串存入檔案?

錯在這裡,極大的可能出現記憶體訪問越界。讀入整數後,應該將其轉為字串,再寫入檔案。例如

scanf("%d",&pt);

char str[100]="";

sprintf(str,"%d\n",pt); //把整數轉為字串fputs(str,j);

...後面fgets也是錯誤的,是很危險的寫法。

4樓:匿名使用者

fopen的使用應該對讀寫分開使用.

使用fputs函式,輸入的整數串存入檔案時,按照2進位制存入,結果可能會不可見.

存入時應該按照fprintf()函式,取出時也按照fscanf(),按如下修改就好了,在dev c++通過測試:

#include

#include

#include

void putss();

int main()

fprintf(j, "%d\n", pt);

fclose(j) ;

}else if(a == 2)

fscanf(j, "%d\n", &pt);

printf("%d\n",pt);

fclose(j) ;

}system("pause");

return 0;

}void putss()

5樓:匿名使用者

輸入的型別應該是char吧,你試試

c語言,檔案讀寫操作為什麼輸出的是亂碼?求網友指點!

6樓:匿名使用者

因為程式裡來用的是

這裡每次

自讀入4個位元組,而因為是這個檔案裡儲存的都是字元,每個字元佔一個位元組,所以實際上第一次是把 10 _ 0 _ 四個字元,拼成了一個4位元組的整數,並且儲存在了a[0]裡面。

造成這種情況的原因就是,儲存在檔案中的text,是文字,一般不用fread來讀。

可以修改為fscanf(fp, "%d", &a[i]);

7樓:匿名使用者

你的檔案內容都在一行,中間用空格分開,程式讀的時候必須針對此情況作相應的處理

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

8樓:匿名使用者

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

9樓:金色潛鳥

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

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

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

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

10樓:

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

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

11樓:匿名使用者

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

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

試試看!!

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

12樓:濸海月明

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

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

13樓:匿名使用者

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

C語言中的標頭檔案可以自己寫嗎,C語言如何寫標頭檔案?

標頭檔案幾個好處 1,標頭檔案可以定義所用的函式列表,方便查閱你可以呼叫的函式 2,標頭檔案可以定義很多巨集定義,就是一些全域性靜態變數的定義,在這樣的情況下,只要修改標頭檔案的內容,程式就可以做相應的修改,不用親自跑到繁瑣的 內去搜尋。3,標頭檔案只是宣告,不佔記憶體空間,要知道其執行過程,要看你...

c語言中0102為什麼等於,c語言中0102為什麼等於

寫錯了吧。是 012 吧。0開頭的 012 是 八進位制整型 12,等於 十進位制 10printf d n 012 輸出 10若用 格式 o 則輸出 12 printf d n 010 2 010是八進位制數 十進位制8 8 2 10 以 d形式輸出 嘛?010是八進位制的10,換算成十進位制是8...

c語言中為什麼char a,C語言中char a 什麼意思,他和char ( )a 有什麼什麼區別?

char a abcd 中a指標指向的地址儲存的內容 abcd 為字串常量,是放在靜態儲存區 char a 10 儲存的內容放在棧上 用scanf 進行輸入操作時,只能修改棧中的變數值,靜態儲存區的常量值不能被修改,所以會報記憶體錯誤 char a char a 表示將變數 a進行強制型別轉換為ch...