文件操作函数,新手入门

C语言文件操作
打开文件
FILE *fp = fopen(“要点一”,“要点二”);
1
要点一:
这里可以写单独的文件名,比如说“1.txt”,那么他就会在当前c文件的文件夹目录下查询文件是否存在,存在则返回这个文件的指针,不存在的话则返回NULL,
这里也可以写一个文件的绝对路径,比如说“C:\aaa\ccc\a.txt”这样的话他就会在整个电脑里面找这个路径是否存在该文件,存在则返回文件指针,不存在则返回NULL
要点二:
这里写的是打开文件之后想要操作的类型主要的类型我查了一下,有如下几种

“r”.为读而打开文本文件.(不存在则出错)
“w”.为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖)
“a”.为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)
“r+”.为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变)

“wb”.为写而打开二进制文件.

“rb”.为读而打开二进制文件
“ab”.为在文件后面添加数据而打开一个二进制文件.
“rb+”.为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置.

“w+”.首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失)

“a+”.功能与”a”相同;只是在文件尾部添加新的数据后,可以从头开始读.
“wb+”.功能与”w+”同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.
“ab+”.功能与”a+”相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置.

将数据存入文件(写文件)
几种操作函数
fputc(FILE* fp,int c);//将一字节数据写入文件,写入成功返回c,失败则返回-1
fputs(const char* a,FILE* fp);将字符数组的指针或者动态申请的数组头指针指向的数据写入文件,写入成功则返回这个数组的头指针
fprintf(FILE* fp,const char* c,….);比printf多了一个文件指针的形参,所以说这个函数不是讲数据输出到黑色控制台的,而是输出到文件中

FILE *fp = fopen(“1.txt”,“w”);
fputc(‘a’,fp);//写字符函数,写成功则返回该字符,否则返回-1
char b[10] = “1111111”;
fputs(b,fp);//放置一个字符数组在文件中,其中,这个数组的长度是必须清楚的,因为这在读文件的时候会用到
fprintf(fp,"%d",15);将15输出到文件
1
2
3
4
5
通常我感觉大概新手的话就用到这三个
注意事项:

因为写入字符串长度的不稳定性,我这里想了个办法,就是提前把他的长度写进去,在读的时候将他的长度知道之后就可以读到正确的字符串了(关于读字符串后面会说)
在写数字的话可以用%10d这样的方式去写,这里的数字是绝对大于你往文件里写的那个数字的长度的,这样你在的时候就可以直接读这么长的空间,读到的数字基本上一定是正确的
关闭文件指针
写完之后一定莫忘关闭文件指针
fclose(fp);
1
读取文件中的数据
对应前面的三个函数,这里也同样三个函数来读取文件中的数据
fgetc(FILE* fp);//从文件读取一字节数据以返回值的形式返回出来
fgets(const char* a,int n,FILE* fp);比写数据多了一个整数,这个整数代表你要读取的字符个数,这个也是我之前说的你必须记住你往里面写入的字符数组的字符个数
fscanf(FILE* fp,const char* c,….);比scanf()多了一个文件指针的形参,所以说这个函数不从黑色控制台读取的,而是从文件中读取数据
FILE *fp = fopen(“1.txt”,“r”);
char a[10];
a[0] = getc(fp);//读取一字节数据
printf("%c\n",a[0]);
fgets(a,8,fp);//读取八个字符
puts(a);
int c;
fscanf(fp,"%5d",&c);//读取一个5长度的空间,读取这个空间上的整数
printf("%d\n",c);

作者:不融化的雪人
来源:CSDN
原文:https://blog.csdn.net/asffghfgfghfg1556/article/details/78820983
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值