一、基本知识
在c语言中,对于文件的读写主要使用FILE进行定义,利用fopen函数打开所需要读写的文件,例如:
FILE *fp = fopen(fileName,openMode);
openMode主要有以下几种方式:
Mode | 用途 | 备注 |
r | 只读 | 文件必须存在 |
w | 只写 | 文件存在则直接打开写入,不存在则创建 |
a | 文件尾部增加数据 | |
rb | 只读 | 文件需为二进制文件 |
wb | 只写 | 文件需为二进制文件 |
ad | 文件尾部增加数据 | |
w+/r+ | 可读可写 |
举个可读可写例子:
FILE *fp = fopen(test.txt,w+);
这里的w+就表示对文件可读可写,r+也是同理
在执行完文件打开操作后一定要记得判空,判断文件是否打开成功
if(fp == NULL)
{
perror("File Open Failed: ");
return;
}
perror函数可以自动帮你返回出错的信息,并添加到你所描述的文本后面
二、读写操作
在初学文件IO的时候,可以选择两个函数对文件进行读写操作,fputs和fgets函数;
fputs(const char *Str, FILE * File);
在这里Str表示你准备往文件里写入的字符串,file即是前文你所打开的文件的指针——fp;
fputs函数的返回值分两种情况,一是写入成功后返回非负整数;二是失败后返回-1;
fgets (char *s, int n, FILE *stream)
第一个参数为你的缓冲池,你可以定义一个数组来存储从文件中读出的数据;第二个参数为缓冲池的大小,一般可以通过sizeof()函数进行计算,最后一个参数是你需要从哪个文件里面读取数据,切记这里不是你的文件名,而是你前文打开文件操作的一个文件指针-fp;
三、实例演示
#include<stdio.h>
#include<string.h>
// 自定义函数方便调用
void fileOpen(const char *);
void fileWrite(FILE *);
void fileRead(FILE *);
int main()
{
char fileName[200];
scanf("%s",fileName);
// 打开文件,用户输入文件名(包括后缀)
fileOpen(fileName);
return 0;
}
void fileOpen(const char *fileName)
{
// 自定义一个路径,将文件名和路径链接起来
char filePath[200] = "./File_IO/";
strcat(filePath,fileName);
//以读写方式打开这个文件
//如果这个文件不存在,则会自动创建
//存在则直接打开就行
FILE *fp = fopen(filePath,"w+");
//一定要记得判断文件是否打开成功,方便调试
if(fp == NULL)
{
perror("File Open Failed: ");
return;
}
//写入一些信息
fileWrite(fp);
//读取出来
fileRead(fp);
//关闭文件
fclose(fp);
}
void fileWrite(FILE *fileName)
{
fputs("hello world",fileName);
}
void fileRead(FILE *fileName)
{
char buf[200]="";
rewind(fileName);
fgets(buf,sizeof(buf),fileName);
printf("%s\n",buf);
}