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

c語言先讀後寫咋整

發布時間: 2022-09-18 21:08:32

c語言中對文件進行讀寫操作必須先將文件怎麼辦

要先聲明一個文件指針,然後利用fopen函數打開文件,該函數打開文件成功會返回一個指向該流的文件指針,然後通過文件指針對文件進行操作,最後在通過fclose函數來關閉流並釋放文件指針。

fopen函數原型:FILE * fopen(const char * path,const char * mode);
第一個參數是路徑,第二個參數是打開文件的方式,有以下幾種:
r 以只讀方式打開文件,該文件必須存在。
r+ 以可讀寫方式打開文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,允許讀數據。
rw+ 讀寫打開一個文本文件,允許讀和寫。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫打開或新建一個二進制文件;只允許寫數據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。

fclose函數用法:int fclose(FILE *stream);
參數為指向與關閉文件的文件指針。

例如:
#include <stdio.h>
#include <stdlib.h> //為了使用exit()
int main()
{
char ch;
FILE* fp;
char fname[50]; //用於存放文件名
printf("輸入文件名:");
scanf("%s",fname);
fp=fopen(fname,"r"); //只供讀取
if(fp==NULL) //如果失敗了
{
printf("錯誤!");
exit(1); //中止程序
}
//getc()用於在打開文件中獲取一個字元
while((ch=getc(fp))!=EOF)
putchar(ch);
fclose(fp); //關閉文件
return 0;
}

⑵ C語言 用r+打開文件 如何在讀操作後面緊跟寫操作

以r+打開文件的話,只讀如果文件不存在創建該文件。要想寫和讀的話就只好以"ab+"打開文件了。

⑶ 如何用c語言實現文件先寫入部分數據,然後再讀取輸出在屏幕上

  • 文件先寫入部分數據,然後再讀取輸出在屏幕上,所以,在打開文件時必須以可讀寫方式"+"打開文件。(r+ w+ a+均可)

  • 寫完後,再讀。因此,要把文件指針前移才可以,否則當前位置處在已寫完的數據位置,無法讀到數據。
    參考代碼:

#include<stdio.h>
intmain()
{
FILE*fp;
charread[1000];
char*p="hello";
chars=' ';

if((fp=fopen("data.txt","a+"))==NULL)//追加方式,可讀可寫
{
printf(" Openfileerror!pressanykeyexit!");
return-1;
}

fputs(p,fp);//寫一個串hello
fputc(s,fp);//寫一個回車符
fputs(p,fp);//再寫一個串hello

fseek(fp,-5,SEEK_CUR);//從當前位置,向前移動5個位元組文件指針
fgets(read,1000,fp);//讀取數據
printf("%s",read);//得到hello

fclose(fp);
return0;
}

⑷ c語言怎麼同時讀寫一個文件

FILE *fp;
fp = fopen("c:\\temp\\test.txt", "r+") //由於反斜杠\是控制字元,所以必須再加一個反斜杠

打開文本文件:

"r":只能從文件中讀數據,該文件必須先存在,否則打開失敗
"w":只能向文件寫數據,若指定的文件不存在則創建它,如果存在則先刪除它再重建一個新文件
"a":向文件增加新數據(不刪除原有數據),若文件不存在則打開失敗,打開時位置指針移到文件末尾
"r+":可讀/寫數據,該文件必須先存在,否則打開失敗
"w+":可讀/寫數據,用該模式打開新建一個文件,先向該文件寫數據,然後可讀取該文件中的數據
"a+":可讀/寫數據,原來的文件不被刪去,位置指針移到文件末尾

打開二進制文件的模式與打開文本文件的含義是一樣的,不同的是模式名稱裡面多一個字母'b』,以表示以二進制形式打開文件。

⑸ c語言 打開文件 先讀取再完全覆蓋

先用讀方式打開文件,讀取完畢後關閉文件。再用相同的文件名寫打開,原來的文件就自動清空了。以文件名是XXX.txt為例——
FILE *fp;
fp=fopen("XXX.txt","r");//讀打開
...
...
fclose(fp);//關閉文件
fp=fopen("XXX.txt","w");//寫打開,原來的文件就沒有了
...
...
不能先寫打開,不然就讀不到內容了。

⑹ C語言將二進制文件中的內容讀出,修改後在重新存入,要怎麼操作

順序不對
先讀
然後再刪除
fp=fopen("a.dat","rb");
fread(&n,sizeof(int),n,fp);
del();(刪除內容)
fclose;
fp=fopen("a.dat","rb");
fwrite(&n,sizeof(int),n-1,fp);
fclose
同時要注意刪除時候數據的連續
以及後續寫入的大小
另外
你的fread(&n,sizeof(int),n,fp);
這里兩個n必須是不同的
前一個是一個數據的buffer
後一個是代表數據的總長度

⑺ C語言中怎樣讀取文件數據並對數據排序再重新寫入文件

我來回答吧:
首先是兩個輸入文件:
一個文本文件:scoret.txt
一個二進制文件:scoreb.txt
文本文件scoret.txt我們可以直接編輯(按要求編輯五個學生的姓名和成績),而二進制文件不易編輯。
我們先寫一個代碼,實再將scoret.txt文件轉成二進制文件scoreb.txt
#include
<stdio.h>
#include
<conio.h>
#include
<stdlib.h>
struct
stu
{

⑻ 在同一c語言中對一個文件先讀後寫寫一次FILE*fp就夠了吧

在c語言里調用fopen函數可以打開文件,通過給它配置不同的文件使用方式的參數,可以實現只讀/只寫/追加等等不同的功能。
如果先讀後寫的話可以用fopen(「xxfile」,「r+」)的方式實現。並且只需open一次。
請採納,謝謝。