问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言怎么创建文件,修改文件内容。

发布网友 发布时间:2022-04-27 04:36

我来回答

5个回答

热心网友 时间:2022-06-26 07:43

1.fopen()

fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILR指针。

参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下:

字符串 含义

"r" 以只读方式打开文件

"w" 以只写方式打开文件

"a" 以追加方式打开文件

"r+" 以读/写方式打开文件,如无文件出错

"w+" 以读/写方式打开文件,如无文件生成新文件

一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符’\n’,而二进制模式认为它是两个字符 0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。

系统默认的是以文本模式打开,可以修改全部变量_fmode的值来修改这个设置,例如_fmode=O_TEXT;就设置默认打开方式为文本模式;而_fmode=O_BINARY;则设置默认打开方式是二进制模式。

我们也可以在模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件,"w+t"或"wt+"表示以文本模式打开读/写文件。

此函数返回一个FILE指针,所以申明一个FILE指针后不用初始化,而是用fopen()来返回一个指针并与一个特定的文件相连,如果成败,返回NULL.
例:
以下是引用片段:
FILE *fp;
if(fp=fopen("123.456","wb"))
puts("打开文件成功");
else
puts("打开文件成败");

2.fclose()

fclose()的功能就是关闭用fopen()打开的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失败返回EOF。

在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况,我以前就经常犯这样的错误。

例:fclose(fp);

3.fputc()

向流写一个字符,原型是int fputc(int c, FILE *stream); 成功返回这个字符,失败返回EOF。

例:fputc(’X’,fp);

4.fgetc()
从流中读一个字符,原型是int fputc(FILE *stream); 成功返回这个字符,失败返回EOF。

例:char ch1=fgetc(fp);

5. fseek()

此函数一般用于二进制模式打开的文件中,功能是定位到流中指定的位置,原型是int fseek(FILE *stream, long offset, int whence);如果成功返回0,参数offset是移动的字符数,whence是移动的基准,取值是:

符号常量 值 基准位置

SEEK_SET 0 文件开头

SEEK_CUR 1 当前读写的位置

SEEK_END 2 文件尾部

例:fseek(fp,1234L,SEEK_CUR);//把读写位置从当前位置向后移动1234字节(L后缀表示长整数)

fseek(fp,0L,2);//把读写位置移动到文件尾

6.fputs()

写一个字符串到流中,原型int fputs(const char *s, FILE *stream);

例:fputs("I Love You",fp);

7.fgets()

从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream); 从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。

例:如果一个文件的当前位置的文本如下:
Love ,I Have

But ……..

如果用

fgets(str1,4,file1);

则执行后str1="Lov",读取了4-1=3个字符,而如果用

fgets(str1,23,file1);

则执行str="Love ,I Have",读取了一行(包括行尾的’\n’)。

8.fprintf()

按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, …]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。

例:fprintf(fp,"%2d%s",4,"Hahaha");

9.fscanf()

从流中按格式读取,其原型是int fscanf(FILE *stream, const char *format[, address, …]);其用法和scanf()相同,不过不是从控制台读取,而是从流读取罢了。

例:fscanf(fp,"%d%d" ,&x,&y);

10.feof()

检测是否已到文件尾,是返回真,否则返回0,其原型是int feof(FILE *stream);

例:if(feof(fp))printf("已到文件尾");

11.ferror()

原型是int ferror(FILE *stream);返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是void clearerr(FILE *stream);

例:printf("%d",ferror(fp));

12.rewind()

把当前的读写位置回到文件开始,原型是void rewind(FILE *stream);其实本函数相当于fseek(fp,0L,SEEK_SET);

例:rewind(fp);

13.remove()

删除文件,原型是int remove(const char *filename); 参数就是要删除的文件名,成功返回0。

例:remove("c:\\io.sys");

14.fread()

从流中读指定个数的字符,原型是size_t fread(void *ptr, size_t size, size_t n, FILE *stream);参数ptr是保存读取的数据,void*的指针可用任何类型的指针来替换,如char*、int *等等来替换;size是每块的字节数;n是读取的块数,如果成功,返回实际读取的块数(不是字节数),本函数一般用于二进制模式打开的文件中。

例:
以下是引用片段:
char x[4230];
FILE *file1=fopen("c:\\msdos.sys","r");
fread(x,200,12 ,file1);//共读取200*12=2400个字节

15.fwrite()

与fread对应,向流中写指定的数据,原型是size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);参数ptr是要写入的数据指针,void*的指针可用任何类型的指针来替换,如char*、int *等等来替换;size是每块的字节数;n是要写的块数,如果成功,返回实际写入的块数(不是字节数),本函数一般用于二进制模式打开的文件中。

例:
以下是引用片段:
char x[]="I Love You";
fwire(x, 6,12,fp);//写入6*12=72字节
将把"I Love"写到流fp中12次,共72字节

16.tmpfile()

其原型是FILE *tmpfile(void); 生成一个临时文件,以"w+b"的模式打开,并返回这个临时流的指针,如果失败返回NULL。在程序结束时,这个文件会被自动删除。

例:FILE *fp=tmpfile();

17.tmpnam();

其原型为char *tmpnam(char *s); 生成一个唯一的文件名,其实tmpfile()就调用了此函数,参数s用来保存得到的文件名,并返回这个指针,如果失败,返回NULL。

例:tmpnam(str1);

热心网友 时间:2022-06-26 07:44

使用文件操作函数fopen即可创建文件,使用文件操作函数fprintf即可修改文件内容。

1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:

#include<stdio.h>
int i,a[100];
int main(){
    FILE * fp1 = fopen("input.txt", "r");//打开输入文件
    FILE * fp2 = fopen("output.txt", "w");//打开输出文件
    if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
        puts("不能打开文件!");
        rturn 0;
    }
    for(i=0;fscanf(fp1,"%d",a+i)!=EOF;i++);//从输入文件连续读取整数到数组a
    for(;i--;)fscanf(fp2,"%d ",a[i]);//把数组a逆序写入到输出文件当中
    fclose(fp1);//关闭输入文件
    fclose(fp2);//关闭输出文件,相当于保存
    return 0;
}

热心网友 时间:2022-06-26 07:44

第一步,建立文件指针,FILE
*fp
第二步,打开文件
,fp=fopen("data.dat","wb");
第三步,写文件,有fwrite()函数,各种参数自己书上找。
最后还要关闭文件,否则容易出问题,fclose(fp);
修改的话先要读取,读数据时用fread()函数,也有好多参数,见课本。
建议你先买一本C语言的书看看,先理论再实践,效果好一点。

热心网友 时间:2022-06-26 07:45

//创建文件
FILE *fpOut=fopen("c:\\a.txt"”,"wt+");

//写数据
char szTmp[20];
strcpy(szTmp,"张三 男\r\n");
fwrite(szTmp, strlen(szTmp),1,fpOut);
strcpy(szTmp,"李四 女\r\n");
fwrite(szTmp, strlen(szTmp),1,fpOut);

//关闭文件
fclose(fpOut);

//修改,删除就是用fread把文件读出来,逐行判断,然后重新写入文件。

热心网友 时间:2022-06-26 07:45

DDDDDDDDDDDDDDD
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巨蟹男对你不闻不问说明什么 消消怎么造句 懒腰怎么造句 世界十大名牌男装标志 策划工作室是做什么的 模型玩具是什么专业 玩魔兽世界,一周在线15小时,求高人帮忙计算一个月各种消费多少钱。 魔兽世界点卡多少钱一个月-点卡收费模式选择建议 玩魔兽世界,一天玩个15个小时,一个月得花多钱 晚上天上扫来扫去的是装饰还是警示灯? c语言问题,如何在文件夹里创建文件? 外地户口,上公立幼儿园需要什么证件 上武汉的幼儿园需要准备哪些资料呀? 幼儿园报名需要准备什么手续材料? 幼儿园入学需要准备哪些材料和物品 孔子的最著名的十个弟子分别是谁? 孔子最得意的弟子有…… 小孩上幼儿园报名需要什么证件齐全? 孔子最得意的弟子是谁? 幼儿园需要哪些证件? 孔子最得意的弟子是哪一个 孔子最得意的弟子有哪些? 孔子最得意的10个弟子有哪些啊? 孔子最得意的弟子是谁 老大这个you shuold paly it safe.这个safe为形容词做宾补?还是说这个safe为副词? 谁是孔子最得意的弟子 keep .safe和 keep.safelY 的区别 孔子的弟子最出名的是哪一个? safe的各种变形是什么? 孔子弟子有三千,其中有哪些是他的得意弟子? windows下,怎样用C语言在桌面创建一个文件 手机屏幕突然出现条纹 智能手机屏幕突然有一条线,一天天的变大变粗是怎么回事啊,该怎么做,谁能告诉我啊? vivo手机后台不运行是怎么回事 realme手机打游戏后台不运行 OPPO手机A72手机后台运行不了总是重启后台应用是怎么回事? vivo手机后台不运行是什么原因 为什么我的手机有些应用不能后台运行? 为什么我手机后台不能运行 OPPO手机打开了允许后台运行为什么还是运行不了。望大神指点? 为什么我的手机软件不能在后台运行 两个苹果手机同时使用一个APP STore账号 能查到对方的信息吗 男人的精子对女人的好处 男人的精子是由什么生产出来的 男人的精子对女人有好处吗? QQ的一些重要数据被清理,导致图片等功能出现异常,可以重启QQ来恢复。。到底是什么被清理了,怎么恢 油烟机噪音太大,非常扰民。工作不久就烧机,还无法使用。望推荐中小型饭店大排量无声抽油烟机 酒店的抽油烟机可以做成无声的吗? 酒店无声吸油烟机图片 无声抽油烟机有吗?