c語言read函數可以打開文件嗎,c語言read函數讀取文件

本文目錄一覽:

c語言求助!readfile()那個函數有問題,請您幫助寫一個可以沒有問題的代碼。真心感謝您!

#includestdio.h

#includemath.h

#includemalloc.h

#includestdlib.h

#includestring.h

enum sex{

female,male

};

struct student

{

char name[20];

enum sex sex;

int score[3];

char number[9];

struct student *next;

};

//學生結構體

struct student* inputcard()

//錄入學生信息系統(所有學生信息)

{

int i=1;

int n,k;

printf(“輸入學生個數:”);

//檢錯。學生個數正確

scanf(“%d”,n);

struct student*p;

struct student*p0;

struct student*head;

p=(struct student*)malloc(sizeof(struct student));

printf(“輸入學號8位:”);

//檢錯。學號數目正確

scanf(“%s”,p-number);

printf(“輸入姓名:”);

scanf(“%s”,p-name);

printf(“選擇性別:0男,1女”);

//檢錯。性別輸入正確

scanf(“%d”,k);

switch(k)

{

case 1:

p-sex=female;

break;

case 0:

p-sex=male;

}

printf(“輸入成績,語數外的順序”);

//成績輸入在0~100

scanf(“%d%d%d”,(p-score[0]),(p-score[1]),(p-score[2]));

head=p;

//先輸入一個,記錄鏈頭

p0=p;

while(i=n-1)

{

int k;

p=(struct student*)malloc(sizeof(struct student));

printf(“輸入學號:”);

scanf(“%s”,p-number);

printf(“輸入姓名:”);

scanf(“%s”,p-name);

printf(“選擇性別:0男,1女”);

scanf(“%d”,k);

switch(k)

{

case 1:

p-sex=female;

break;

case 0:

p-sex=male;

}

printf(“輸入成績,語數外的順序”);

scanf(“%d%d%d”,(p-score[0]),(p-score[1]),(p-score[2]));

p0-next=p;

p0=p;

i++;

}

p0-next=NULL;

return

head;

}

void writefile0(struct student*head) //已知鏈表頭head,將之寫入文件中

{

struct student*p1;

FILE *f0;

char string[40];

printf(“請輸入文件路徑或者文件名字!(擴展名)”);

scanf(“%s”,string);

f0=fopen(string,”w”);

//新建一個文件

p1=head;

while(p1!=NULL)

{

fprintf(f0,”%5s “,p1-number);

fprintf(f0,”%5s “,p1-name);

fprintf(f0,”%5d “,p1-sex);

fprintf(f0,”%5d “,p1-score[0]);

fprintf(f0,”%5d “,p1-score[1]);

fprintf(f0,”%5d\n”,p1-score[2]);

p1=p1-next;

}

printf(“所有學生的信息已寫入文件%s中\n”,string);

fclose(f0);

}

struct student* readfile0() //讀取原始文件(所有學生的信息)

{

FILE *f0;

struct student *head=NULL, *tail,*m;

char string[40];

student temp;

printf(“請輸入總信息的文件名:”);

scanf(“%s”,string);

while((f0=fopen(string,”r”))==NULL)

{

printf(“不能打開,重新輸入\n”);

scanf(“%s”,string);

}

while(!feof(f0))

{

fread(temp,sizeof(struct student),1,f0);

m=(struct student*)malloc(sizeof(struct student));

*m = temp;

if ( head==NULL )

head=m;

else

tail-next=m;

tail=m;

}

tail-next=NULL;

printf(“該文件已打開!\n”);

fclose(f0);

return

head;

}

void Free(student * head)

{

student *p = head;

while(p != NULL)

{

p = head-next;

free(head);

head = p;

}

}

void main()

{

struct student* base0;

struct student* base1;

base0=inputcard();

writefile0(base0);

base1=readfile0();

Free(base0);

Free(base1);

}

c語言中fopen函數的打開方式,二進位打開和正常打開文件有什麼區別?

r模式打開的文件一般都是ASCII文件,也就是文件文件,供直接閱讀的(用記事本程序打開該文件可以直接閱讀),這種方式下打開文件一般用fscanf()/fgetc()等函數操作

rb模式打開的文件一般不用於直接閱讀(用記事本打開後看到的可能是亂碼),而是存取程序要用到的二進位數據,這種方式下打開文件一般用fread()函數進行操作

如何用C語言fopen函數實現這樣的文件打開功能?

部分方法:\x0d\x0afopen的函數原型:FILE * fopen(const char * path,const char * mode);\x0d\x0afopen函數的第一個參數是文件路徑,第二個參數是打開方式,有以下幾種方式:\x0d\x0ar 以只讀方式打開文件,該文件必須存在。\x0d\x0ar+ 以可讀寫方式打開文件,該文件必須存在。\x0d\x0arb+ 讀寫打開一個二進位文件,允許讀數據。\x0d\x0arw+ 讀寫打開一個文本文件,允許讀和寫。\x0d\x0aw 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。\x0d\x0aw+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。\x0d\x0aa 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)\x0d\x0aa+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)\x0d\x0awb 只寫打開或新建一個二進位文件;只允許寫數據。\x0d\x0awb+ 讀寫打開或建立一個二進位文件,允許讀和寫。\x0d\x0awt+ 讀寫打開或著建立一個文本文件;允許讀寫。\x0d\x0aat+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。\x0d\x0aab+ 讀寫打開一個二進位文件,允許讀或在文件末追加數據。\x0d\x0a上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進位文件,而非純文字文件。\x0d\x0a\x0d\x0aC語言的文件處理的過程是,先聲明一個文件指針,然後用fopen函數打開文件,fopen打開文件成功的話返回一個指針該流的文件指針,然後利用指針對文件進行操作就好了,最後完事了在fclose函數關閉流,並釋放指向他的指針。\x0d\x0a例如:要對c:\example.txt的文本文件內容為:ISP,進行操作\x0d\x0a#include \x0d\x0a\x0d\x0aint main()\x0d\x0a{\x0d\x0achar ch;\x0d\x0aFILE* fp;\x0d\x0achar fname[50] = “c:\example.txt”;\x0d\x0afp = fopen(fname,”r”); //只供讀取\x0d\x0aif(fp == NULL) //如果失敗了\x0d\x0a{\x0d\x0aprintf(“ERROR!”);\x0d\x0areturn 1;\x0d\x0a}\x0d\x0a//getc()用於在打開文件中獲取一個字元\x0d\x0awhile((ch = getc(fp)) != EOF) //循環獲取直至文件結束 EOF標誌(End Of File)\x0d\x0aputchar(ch); //列印獲取到的字元\x0d\x0afclose(fp); //關閉文件\x0d\x0areturn 0;\x0d\x0a}\x0d\x0a\x0d\x0a希望對你有幫助!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/154488.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-16 14:12
下一篇 2024-11-16 14:13

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常問題的解決

    本文旨在解決vue下載無後綴名的文件被加上後綴.txt,有後綴名的文件下載正常的問題,提供完整的代碼示例供參考。 一、分析問題 首先,需了解vue中下載文件的情況。一般情況下,我們…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件並生成完整的圖像

    OBJ格式是一種用於表示3D對象的標準格式,通常由一組頂點、面和紋理映射坐標組成。在本文中,我們將討論如何將多個OBJ文件拼接在一起,生成一個完整的3D模型。 一、讀取OBJ文件 …

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 為什麼用cmd運行Java時需要在文件內打開cmd為中心

    在Java開發中,我們經常會使用cmd在命令行窗口運行程序。然而,有時候我們會發現,在運行Java程序時,需要在文件內打開cmd為中心,這讓很多開發者感到疑惑,那麼,為什麼會出現這…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29

發表回復

登錄後才能評論