當前位置:首頁 » 編程語言 » c語言向文件寫入數據

c語言向文件寫入數據

發布時間: 2022-12-30 03:47:34

1. c語言:如何將數據寫入文件

原因:
使用fopen時參數不正確,你是用 w參數,若文件存在則文件長度清為0,即該文件內容會消失。每次都是重新清空並寫數據, 將w修改為a即可.
fopen函數說明見下方:
---------------
FILE * fopen(const char * path,const char * mode);
[編輯本段]函數說明
參數path字元串包含欲打開的文件路徑及文件名,參數mode字元串則代表著流形態。
mode有下列幾種形態字元串:
r 打開只讀文件,該文件必須存在。
r+ 打開可讀寫的文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,只允許讀寫數據。
rt+ 讀寫打開一個文本文件,允許讀和寫。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫打開或新建一個二進制文件;只允許寫數據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。

2. C語言,往文件中寫入數據的問題

fclose(fp):函數fclose()關閉給出的文件流,
釋放已關聯到流的所有緩沖區.
fclose()執行成功時返回0,否則返回EOF.
加上這一句是為了保護你的文件
如果不寫這句
那麼別的程序也可以隨意的對該文件進行寫入
這樣你的文件就是亂套了。
首先樓主要搞清楚getchar()是什麼意思
getchar()
相當於
getc(stdin)也就是從stdin緩沖流裡面讀數據
你寫這句也是為了防止你輸入字元後後面還有殘余
但是你第二個是讀文件數據流
根本就沒有讀緩沖流
所以不寫那句也可以的
不知道樓主明白否?
補充回答:
樓主沒有弄明白什麼是EOF
EOF常被作為文件結束的標志。EOF
的值通常為
-1
它不是字元串
他相當於宏定義
它是不會被寫入到文件當中的
如樓主還有疑問
直接hi我吧

3. c語言數據寫入文件

兩種方法

一種

#include<stdio.h>
#include<math.h>
intmain()
{FILE*fpt;
intT=300;
doublem=0.029,v,k=1.38464,f,a,b,c,d,e;
fpt=fopen("shuju1.txt","w");//循環外打開關閉文件
for(v=0;v<1000;v=v+0.1)
{a=m/(2*k*T);
b=pow(v,2);
c=4*pow(a,1.5);
d=a*b;
e=exp(-d);
f=c*b*e;
printf("%f ,%f ",v,f);

fprintf(fpt,"%f,%f ",v,f);
}
fclose(fpt);
return0;}


另一種 用a屬性 追加文件

#include<stdio.h>
#include<math.h>
intmain()
{FILE*fpt;
intT=300;
doublem=0.029,v,k=1.38464,f,a,b,c,d,e;
for(v=0;v<1000;v=v+0.1)
{a=m/(2*k*T);
b=pow(v,2);
c=4*pow(a,1.5);
d=a*b;
e=exp(-d);
f=c*b*e;
printf("%f ,%f ",v,f);
fpt=fopen("shuju1.txt","a");
fprintf(fpt,"%f,%f ",v,f);
fclose(fpt);}

return0;}

都可以做到你的效果。


區別是 第二種,多次執行程序後,所有輸出會累加。

而第一種只保存一次執行的,再次執行文件會被覆蓋。

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

將if((fp=fopen("e:\\文件讀寫.txt","r"))==NULL)中的判斷條件改成 if(fp==NULL)就行,因為你前面已經定義了fp=fopen("e:\\文件讀寫.txt","w");是以寫方式打開文件,所以再判斷中無需再添加以讀方式打開文件了,這樣就不會空了。

# include <stdio.h>
# include <stdlib.h>

int main ()
{
FILE *fp;

fp=fopen("e:\\文件讀寫.txt","w");

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

fputc('H',fp);
fputs(" Hello World",fp);

fclose(fp);

return 0;
}

5. C語言中怎樣向文件中寫入數據

a+是追加打開文件,不會將原有數據覆蓋
一個簡單的做法是分兩次打開文件,第一次用r打開讀取,關閉文件,第二次用w打開覆蓋寫入排序好的數據。

6. C語言fwrite怎麼寫入文件

C語言fwrite寫入文件可以參考以下的代碼:

//定義一個學生結構體

structStudent_type

{

charname[10];

intnum;

intage;

charaddr[30];

}stud[40];

inti;

FILE*fp;//定義一個文件指針fp

fp=fopen("stu.dat","wb");//以二進制可寫方式打開stu.dat文件

//將40個學生的記錄寫入文件stu.dat中

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

fwrite(&stud[i],sizeof(structStudent_type),1,fp);

(6)c語言向文件寫入數據擴展閱讀:

fwrite函數用法

size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

返回值:返回實際寫入的數據塊數目

1、buffer:是一個指針,對fwrite來說,是要獲取數據的地址

2、size:要寫入內容的單位元組數

3、count:要進行寫入size位元組的數據項的個數

4、stream:目標文件指針

5、返回實際寫入的數據項個數count

說明:寫入到文件的哪裡與文件的打開模式有關,如果是w+,則是從file pointer指向的地址開始寫,替換掉之後的內容,文件的長度可以不變,stream的位置移動count個數;如果是a+,則從文件的末尾開始添加,文件長度加大。

fseek對此函數有作用,但是fwrite函數寫到用戶空間緩沖區,並未同步到文件中,所以修改後要將內存與文件同步可以用fflush(FILE *fp)函數同步。

7. c語言中向文件中寫入數據

void zongpaiming()
{int a[5000],i,j;
struct student t;
FILE*fp, *fp2; // 加一個文件指針
fp=fopen("f1.txt","r");
fp2=fopen("f2.txt", "w");
// 一般這個位置還要判斷文件是否打開成功
if (fp == NULL || fp2 == NULL)
{
printf("open file failed.\n");
return;
}
for(i=0;i<5000;i++)
{fscanf(fp,"%s %s %d %d %d %d %d",&stu[i].xuehao,&stu[i].name,&stu[i].bixiuchengji,&stu[i].huodongjiafen,&stu[i].shehuijiafen,&stu[i].guake,&stu[i].siji);}
fclose(fp);
for(i=0;i<4999;i++)
{for(j=i+1;j<5000;j++)
{
if(strcmp(stu[i].xuehao,stu[j].xuehao)>0)
{
t=stu[i];stu[i]=stu[j];stu[j]=t;
}
}
}
for(i=0;i<5000;i++)
{
//printf("%s\n",stu[i].xuehao);//把這句替換成下面那句
fprintf(fp2, "%s\n",stu[i].xuehao);
}
// 別忘記關閉文件句柄
fclose(fp);
fclose(fp2);
}

我就是針對你的代碼和你的需求給你修改了必要的代碼,至於你的代碼本身要完成什麼功能我並沒有幫你檢查

8. C語言,往文件中寫入數據的問題

fclose(fp):函數fclose()關閉給出的文件流, 釋放已關聯到流的所有緩沖區. fclose()執行成功時返回0,否則返回EOF.
加上這一句是為了保護你的文件 如果不寫這句 那麼別的程序也可以隨意的對該文件進行寫入 這樣你的文件就是亂套了。
首先樓主要搞清楚getchar()是什麼意思
getchar() 相當於 getc(stdin)也就是從stdin緩沖流裡面讀數據 你寫這句也是為了防止你輸入字元後後面還有殘余
但是第二個是讀文件數據流 根本就沒有讀緩沖流 所以不寫那句也可以的。
沒有弄明白什麼是EOF EOF常被作為文件結束的標志。EOF 的值通常為 -1
它不是字元串 他相當於宏定義 它是不會被寫入到文件當中的

9. c語言中怎麼向文件中寫入數據啊 具體點 謝謝

不知你向文件輸入的是什麼數據,輸入數據的函數很多,有fputc(s,fp);有fwrite()函數、、、、
下面是想文件輸入字元,並把字元串中的小寫字元轉換成大寫字元:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

int main()
{
FILE *fp;
char filename[20];
printf("請輸入文件的名稱:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open file ,,,\n");
exit(0);

}
printf("請輸入字元直至結束(ctrl +z):");
fflush(stdin);
char s;

while(scanf("%c",&s),=EOF)
{
if(islower(s))
s=toupper(s);//把小寫字元轉換成大寫字元
fputc(s,fp);

}

rewind(fp);//是位置指針重新返迴文件的開頭,此函數沒有返回值

if((fp=fopen(filename,"r"))==NULL)//以讀的方式打開文件
{
printf("cannot open file ,,,\n");
exit(0);

}

while(,feof(fp))
{
s=getc(fp);
putchar(s);

}

return 0;

}
測試:
請輸入文件的名稱:hello
請輸入字元直至結束(ctrl +z):hello world ,
Z
Z。

熱點內容
安卓手機微信默認瀏覽器怎麼設置 發布:2025-07-02 14:14:55 瀏覽:503
資料庫質檢 發布:2025-07-02 14:13:41 瀏覽:458
opensslvc編譯 發布:2025-07-02 14:13:31 瀏覽:885
linux三系統 發布:2025-07-02 14:13:30 瀏覽:39
華為雲穩定伺服器 發布:2025-07-02 13:58:09 瀏覽:428
安卓游戲在哪裡下載免費 發布:2025-07-02 13:58:08 瀏覽:597
mts壓縮 發布:2025-07-02 13:53:31 瀏覽:965
資料庫的事務事務 發布:2025-07-02 13:51:15 瀏覽:610
買五菱s3哪個配置好 發布:2025-07-02 13:51:11 瀏覽:773
天乾地支對照表及演算法 發布:2025-07-02 13:50:04 瀏覽:787