对于文件来说,让人很容易想到一个老生常谈的问题:
将大象三步放进冰箱 1.打开冰箱 2.放入大象 3.关闭冰箱。所以文件的开启和关闭就是最不能忘记的一小部分啦!
对一个文件进行操作的格式如下
首先引出 文件指针FILE *fr,*fw;--指向打开的文件
打开文件
fr=fopen(“文件/地址”,“打开方式”);
打开方式如下:
r 读文件,文件需存在
r+ 读写文件,文件需存在
w 写文件,文件不存在则创建,存在则覆盖原文件内容写文件
w+ 读写文件,文件不存在则创建,存在则覆盖原文件内容写文件
a 追加文件,文件不存在则创建,存在则在后面追加
a+ 读写文件,从文件头读,文件尾写入,文件不存在则创建,存在则在后面追加
//尾部+b表示对二进制文件进行操作
文件读写
fgetc/fputc--读取/写入一个字符
fgets/fputs--读取/写入一个字符串
fread/fwrite--按照/写入数据块来读
fscanf/fprintf--按照格式来读/写入}
有时需要验证是否到文件末尾
(feof是c标准函数,feof();到末尾了=1,没=0 !feof(fp)组合起来就是文 件尚未结束的逻辑。)
While(!feof(fr))
(1)读文件~~~
(!!!待读的文件要和代码保存在一个文件夹!!!这是成功与否的关键)
基本格式char c; buf[1024]={0} ;
读取文件 c= fgetc(fp);
fgets(buf,1024,fp);
fread(buf,1024,100,fp);
fscanf(fp,”%s”,buf);
代码举个栗子吧
#include<stdio.h>
#include<string.h>
int main()
{
FILE*fr;
fr=fopen("out.txt","r");
char str[100]={0};
char ch;
/* ch=fgetc(fr);
printf("%c",ch); //读取一个字符 */
/* fgets(str,100,fr);
printf("%s",str); //每次读取一行字符 ,最多读取n-1个字符 */
/* fread(str,100,1,fr);
printf("%s",str);
//数据块读取 ,前两行和后两行等价
fread(str,sizeof(char),sizeof(str),fr);
printf("%s",str); */
/* fscanf(fr,"%s",str);
printf("%s",str); //fscanf读取数据遇到换行符结束 */
/* while(!feof(fr))
{
ch=fgetc(fr);
printf("%c",ch);
} //一个一个读字符直到读完 */
/* while(!feof(fr))
{
fgets(str,100,fr);
printf("%s",str);
} //一行一行读直到读完 */
fclose(fr);
return 0;
}
(2).写文件~~~
Char name[ ]=”hello world"; int i=0;
fputc(name[i],fp);
fputs (name,fp);
fwrite(name, strlen(name),1,fp);
fprintf(fp,"%s",name) ;
代码举个栗子吧
#include<stdio.h>
#include<string.h>
int main()
{
FILE*fp;
fp=fopen("in.txt","w");
char ch='a';
char str[100]={0};
int i=0;
gets(str);
// fputc(ch,fp); //写一个字符给文件 */
/* fputs(str,fp); //将一串字符给文件 */
/* for(i=0;i<100;i++)
{
fputc(str[i],fp);
}
// fprintf(fp,"%s",str);
// fwrite(str,strlen(name),1,fp); 将一串字符给文件 */
fclose(fp);
return 0;
}
关闭文件
fclose(fr);