简单的文件操作
1、File结构体一般都是使用该结构体的指针
2.打开文件和关闭文件
成对出现(拆cp可耻),打开文件后一定要关闭
参数path字符串包含欲打开的文件路径及文件名,参数mode字
符串则代表着流形态。
mode有下列几种形态字符串:
r以只读方式打开文件,该文件必须存在。
r以可读写方式打开文件,该文件必须存在
rb+读写打开一个二进制文件,允许读数据。
rw+读写打开一个文本文性,允许读和写。
w打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
W+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
3.读取文件
fgets.cpp
直接上程序:
#include<stdio.h>
int main()
{
FILE *fp;//以指针的形式引入file结构体
char buf[100];
//打开文件
fp=fopen ("D:\\RandomFile\\1.txt","r");//指明路径+文件名,操作
//判断是否打开成功
if(NULL==fp)
{
printf("Fail to open!");
}
//循环获取,因为fgets默认获取一行
while(fgets(buf,20,fp))
{
printf("%s",buf);
}
//凡是打开了必然要关闭
fclose(fp);//cp不可拆
return 0;
}
为什么运行失败?因为没有创建1.txt
fgets.cpp
直接上程序:
#include<stdio.h>
#define BUFSIZE 100
int main()
{
FILE *fp;//以指针的形式引入file结构体;
char buf[BUFSIZE]="This is fputs! \n hello bady";
//打开文件
fp=fopen ("D:\\RandomFile\\1.txt","w");//指明路径+文件名,操作;
fputs(buf,fp);
//判断是否打开成功 ;
if(NULL==fp)
{
printf("Fail to write!");
}
//凡是打开了必然要关闭 ;
fclose(fp);//cp不可拆 ;
return 0;
}
fseek和ftell
#include<stdio.h>
int main()
{
FILE *fp;//以指针的形式引入file结构体;
char buf[100];
//打开文件
fp=fopen ("D:\\RandomFile\\1.txt","r");//指明路径+文件名,操作;
//判断是否打开成功 ;
if(NULL==fp)
{
printf("Fail to open!");
}
// //循环获取,因为fgets默认获取一行 ;
// while(fgets(buf,100,fp))
// {
// printf("%s",buf);//每次读一行都自动向下偏移一行;
// }
fgets(buf,100,fp);
printf("%s",buf);
fseek(fp,0,SEEK_SET);
fgets(buf,100,fp);
printf("%s",buf);
//凡是打开了必然要关闭 ;
fclose(fp);//cp不可拆 ;
return 0;
}
没加fseek
加了feek把位置置为0后又把第一行读一遍使用SEEK_SET
把位置定为5,就从第五个开始读取
使用SEEK_END输出的是文件的最后5个字符