當前位置:首頁 » 編程語言 » c語言文件讀寫方式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言文件讀寫方式

發布時間: 2022-02-24 02:49:34

A. c語言文件的讀寫

一個c語言讀寫文件程序:
#include "stdio.h"
#include <stdlib.h>

main()
{
FILE *fp1;//定義文件流指針,用於打開讀取的文件
FILE *fp2;//定義文件流指針,用於打開寫操作的文件
char text[1024];//定義一個字元串數組,用於存儲讀取的字元
fp1 = fopen("d:\\a.txt","r");//只讀方式打開文件a.txt
fp2 = fopen("d:\\b.txt","w");//寫方式打開文件a.txt
while(fgets(text,1024,fp1)!=NULL)//逐行讀取fp1所指向文件中的內容到text中
{
puts(text);//輸出到屏幕
fputs(text,fp2);//將內容寫到fp2所指向文件中
}
fclose(fp1);//關閉文件a.txt,有打開就要有關閉
fclose(fp2);//關閉文件b.txt
}

B. c語言的文件讀寫代碼

fopen打開文件
fread讀文件
fwrite寫文件
fclose關閉文件
幾個函數,按你文件讀寫要求寫一個,不難的

C. C語言對文件的數據寫入的方法

if((fp=fopen("e:\\文件讀寫.txt","r"))==NULL)//注意不要將==寫成=號,文件的路徑是「磁碟:\\文件夾\\文件名.格式」
{
printf("無法打開「文件讀寫.txt」\n");
exit(1);
}
else
printf("文件已成功打開,可以寫入數據了。\n");
刪掉

D. c語言文件讀寫,如何正確的存取多位數(int)

C語言將整形數據存儲到文件中,可採用兩種方法,1、二進制存取 2、字元方式存取。

因存儲方式的不同,讀取也要採用相應的方式進行操作,否則不能正確得到存儲的數據。

  1. 二進制存取

    二進制方式是將原數據的內存格式存儲到文件中,在同類型的機器上可以正確的讀取。但如果換成不同類型的機器則會出現數據解釋錯誤,因此,具有不可移植性。

    這種方式,採用的存取函數相應為:fwrite()和fread().

    如:

    int num=12345;

    FILE *fp=fopen( "datafile", "wb" );

    fwrite( &num, sizeof(int), 1, fp ); //將num數據寫入文件

    ....

    FILE *fp=fopen( "datafile", "rb" );

    fread( &num, sizeof(int), 1, fp ); //讀文件數據到num中

  2. 字元方式存取

    字元方式是將數據的可見內容,以字元形式存儲到文件中,可以在任何機器上閱讀並讀取,方便不同系統間的數據傳遞。

    這種方式,採用的存取函數相應為:fprintf()和fscanf().

    如:

    int num=0;

    FILE *fp=fopen( "datafile", "w" );

    fprintf(fp, "%d ", num ); //將num數據寫入文件

    ....

    FILE *fp=fopen( "datafile", "r" );

    fscanf(fp,"%d", &num ); //讀文件數據到num中

E. c語言寫入文件方法是什麼

程序注意的一點,二進制和文本形式的讀取區別你需要鞏固,讀的文件就不要以讀寫形式打開,養成一個好的習慣。
另外一個不太重要的一點,id確實很少作為int類型的,因為有些id會很長,比如10位20位,這樣int就存不下了,而用char數組存的話只需要10個位元組20個位元組就能存下,對於每一位也好比較。
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int unsigned id;
float score [3];
float rank;
}Student;

int main ()
{
Student s;
FILE * fp;
fp=fopen("C:\\f11.txt","r"); //盡量以可讀方式打開
if (!fp)
{
printf("file cannot be opened");
exit(1);
}
//fscanf(fp,"%d %f %f %f",&s.id,&s.score[0],&s.score[1],&s.score[2]); 這一行拿到下面while語句裡面
//fprintf(stdout,"%g",s.score[2]);
FILE * fw;
fw=fopen("C:\\f11a.txt","w"); //注意wb是以2進制形式打開文件,還有目錄的格式
if (!fw)
{
printf("file cannot be opened");
exit(1);
}

while(!feof(fp))
{
fscanf(fp,"%03d%f%f%f",&s.id,&s.score[0],&s.score[1],&s.score[2]);
s.rank=(s.score[0]+s.score[1]+s.score[2])/3;
fprintf(fw,"%03d\t%.1f\t%.1f\t%.1f\t%.1f\n", s.id, s.score[0], s.score[1], s.score[2], s.rank); //尤其注意fprintf和fwrite不同,fwrite是以二進制形式寫文件,如果用fwrite的話將會顯示亂碼,fwrite和fread配套,fscanf和fprintf配套
}

fclose (fp);
fclose(fw);
return 0;
}

F. C語言中文件的讀寫實際過程

RB和R本質上是二進制數據流,但用於文本的二進制數據的含義是ASCII或其他內部代碼。R/W和Rb/WB之間的一個重要區別是,R/W的文本換行格式在不同的系統上是不同的(DOS/windows下的回車字元Cr('\R')+換行字元LF('\n')、UNIX/Linux下的LF和MAC下的Cr),這導致文件操作的細節不同(例如,通過fput和fprintf處理字元串的結尾)。
具體的讀寫實現由庫函數處理,WB/RB模式一般採用緩沖區讀寫,最終實現對外部內存文件或其他輸入/輸出流的抽象(包括在內存中建立緩沖區)。在此基礎上,w/R模式處理了上述一些差異。通常,緩沖區的操作取決於庫函數的實現。用戶無法看到庫函數,因為它是不必要的(無法保證不同平台的實現是一致的)。
對於標准輸入設備,如鍵盤,它被抽象為標准輸入流stdin。除了抽象過程本身(由底層系統實現)外,實現方法與從外部存儲文件讀取之間沒有本質區別。

G. C語言文本方式和二進制方式讀寫操作的區別

首先要明白一點:任何數據在內存中或者硬碟上的存儲都是1、0組成的序列,從硬碟、內存這個角度看根本不存在什麼二進制和文本模式之分
區別
稍對C語言操作文件有了解都知道2點:1、首先應該fopen打開文件2、有兩類文件操作函數,對應著二進制模式和文本模式。
兩個模式的區別在兩個地方,這兩個地方的區別正好體現在剛才說的2點上。
1、 打開文件時選擇模式
使用fopen函數時,要給予第二個參數一個值,告訴fopen使用什麼模式打開文件。這里的參數決定的就是第一個區別:對於字元串中的\n如何處理?
教材中說,文本模式中,在存儲\n時要轉化為\r\n,讀取文件時進行逆轉換。二進制模式時,則不進行轉換。這是在操作系統是Windows的條件下。
首先我們要知道回車和換行是不相同的,Windows中文字另起一行內存表示為<回車><換行>對應\r\n,而Linux、Unix中則是單單一個<換行>對應\n。Mac中則是一個<回車>對應\r
C語言起源於Unix的產生,對於文件中的另起一行,Unix採用單個\n表示。所以我們通常在輸出一個短話想換行時加一個\n就可以了,Windows也是如此。到了數據從內存到硬碟上進行存儲時,對於unix來說,\n照樣是\n。而Windows為了防止讀取時混亂必須轉換為\r\n。Mac呢,就是\r。
這就是第一區別,這個區別是體現在fopen第二個參數,跟你使用文本模式的函數還是二進制模式的函數根本不相關!你可以做一個實驗,使用二進制模式的函對於同樣的字元串:」Hello\n」,當fopen使用w參數寫入文件,無論是fwrite還是fprintf都會對\n會進行轉換,而使用wb參數則都不進行轉換。
2、 兩種不同模式的函數
打開文件後,要進行數據寫入。
教材中說,使用文本模式打開文件,就要用fprintf寫入數據,使用二進制模式打開文件,就要用fwrite寫入數據。
其實你用文本模式打開文件,一個字元串,fprintf、fwrite都能寫入文件,寫入還都是一樣的數據。使用兩類函數的區別其實在於數字的處理上。
對於一個數字5,你用fprintf寫入,將把數字5轉換為字元5,將其對應的ASCII編碼存入存儲器,佔用1個位元組。但實際上數字5就是數字5,對應2進制101,整形佔用4個位元組。fwrite則將這個數字在內存中佔用的4個位元組全部原樣寫入到硬碟中,佔4個位元組。
而同樣對於一段字元串」Hello」,使用ASCII編碼對於fprintf和fwrite都能原樣寫到硬碟中。
同樣對於這個區別,你仍然能做個實驗,對於一個int型數字5,你如何用fprintf和fwrite寫入到硬碟中,他們對應的十六進制碼是多少?對於一段字元串你再用兩個函數分別寫到硬碟中,你看看對應的十六進制碼是什麼。這個實驗跟你用fopen如何指定第二個參數無關。

H. C語言如何讀取文件

C語言讀取文件的具體步驟如下:

我們需要准備的材料分別是:電腦、C語言。

1、首先我們打開需要讀取的文件,點擊打開左上角文件中的「另存為」。

I. C語言如何將讀入文件的方式改為以位元組方式讀入

  1. fopen函數中使用mode控制參數"rb"即可:f=fopen("文件名","rb")。

  2. fopen函數簡介
    函數功能: 打開一個文件
    函數原型:FILE * fopen(const char * path,const char * mode);
    相關函數:open,fclose,fopen_s[1] ,_wfopen
    所需庫: <stdio.h>
    返回值: 文件順利打開後,指向該流的文件指針就會被返回。若果文件打開失敗則返回NULL,並把錯誤代碼存在errno 中。
    一般而言,打開文件後會作一些文件讀取或寫入的動作,若打開文件失敗,接下來的讀寫動作也無法順利進行,所以在fopen()後請作錯誤判斷及處理。
    參數說明:
    參數path字元串包含欲打開的文件路徑及文件名,參數mode字元串則代表著流形態。
    mode有下列幾種形態字元串:
    r 打開只讀文件,該文件必須存在。
    r+ 打開可讀寫的文件,該文件必須存在。
    rb+ 讀寫打開一個二進制文件,只允許讀寫數據。
    rt+ 讀寫打開一個文本文件,允許讀和寫。
    w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
    w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
    a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
    a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
    wb 只寫打開或新建一個二進制文件;只允許寫數據。
    wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
    wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
    at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。
    ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。

    上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。不過在POSIX系統,包含Linux都會忽略該字元。由fopen()所建立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)許可權,此文件許可權也會參考umask 值。
    有些C編譯系統可能不完全提供所有這些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統的規定。

J. C語言如何實現對txt文件的讀取和寫入

1、使用VS新建空工程,直接點擊確定,如下所示。