当前位置:首页 » 编程语言 » 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。

热点内容
android画虚线 发布:2025-07-03 04:11:04 浏览:383
系统启动密码怎么取消 发布:2025-07-03 04:08:06 浏览:745
python程序设计第三版课后答案 发布:2025-07-03 03:58:08 浏览:213
socket上传文件 发布:2025-07-03 03:57:24 浏览:895
安卓cleo脚本 发布:2025-07-03 03:41:26 浏览:245
编程器解读 发布:2025-07-03 03:22:49 浏览:24
中国电信加密通信业务 发布:2025-07-03 03:06:00 浏览:521
脚本家的台词 发布:2025-07-03 03:05:50 浏览:709
arcgisforpython 发布:2025-07-03 03:05:46 浏览:899
期计算法 发布:2025-07-03 02:56:53 浏览:405