文件
文件操作
文件结构指针
在C语言文件程序中当建立一个或调用一个磁盘文件时,必须了解如下信息:
1.与该文件对应的内存缓存区地址
2.文件当前的读写位置
3.文件操作的方式
4.是文本文件还是二进制文件
5.是读操作还是写操作
存放以上信息的区域在内存中是一个由系统定义的结构体变量,该变量具有FILE数据结构,FILE数据结构定义在stdio.h中
type struct
{
short level;
unsigned flags;
char fd;
unsigned char hild;
short bsize;
unsigned char* buffer;
unsigned char* curp;
unsigned istemp;
short token;
}FILE;
文件的打开
C语言程序标准文件打开用 fopen()函数实现,其调用格式为
FILE *fopen(char *filename,char *mode)
mode为操作方式
文件操作方式
文件操作方式 | 含义 |
---|---|
r | 为只读打开一个字符文件 |
w | 为只写打开一个字符文件,文件指针指向文件首部 |
a | 打开字符文件,指向文件尾,在已存在文件中追加数据 |
rb | 为只读打开一个二进制文件 |
wb | 为只写打开一个二进制文件 |
ab | 打开二进制文件,以向文件追加数据 |
r+ | 以读写方式打开一个已存在的字符文件 |
w+ | 为读写建立一个新的字符文件 |
a+ | 为读写打开一个字符文件,进行追加 |
rb+ | 为读写打开一个二进制文件 |
wb+ | 为读写建立一个新的二进制文件 |
ab+ | 为读写打开一个二进制文件进行追加 |
//注意
1.r,a,r+,a+方式打开文件必须要求文件存在,用w,w+方式在该文件不存在情况下,建立以指定名字命名的文件,若存在,则删去该文件,重新建立
2.当用fopen()函数成功打开一个文件时,该函数将返回一个FILE指针,如果文件打开失败,则返回一个NULL空指针
关闭文件
关闭标准文件用 fclose()函数,函数说明如下
int fclose(FILE *stream)
若成功,返回一个0值,若不成功,返回一个非0值
文件的读写
1.文件的字符读函数,其形式
int fgetc(FILE *stream)
若遇到结束符EOF,则函数返回-1
2.文件的字符写函数,其形式
int fputc(int char,FILE *stream)
如果执行成功就返回被输出的字符,否则返回eof
例:读出磁盘文件datafile.txt内容,将它们显示在屏幕上
#include<iostream>
#include<process.h>
#include<stdio.h>
using namespace std;
int main()
{
FILE* fp=NULL;
char ch; //定义file结构指针变量
if ((fp = fopen_s(&fp,"datafile.txt", "r")) == NULL) //打开并测试文件
{
cout << "file cannot be opened" << endl;
exit(1); //若不成功退出
}
while ((ch = fgetc(fp)) != EOF) //读文件并测试是否文件尾
fputc(ch, stdout); //输出到显示器
fclose(fp);
}
报错,参考了:https://blog.csdn.net/weixin_44614751/article/details/103263393
https://blog.csdn.net/xueluowutong/article/details/81974565
https://blog.csdn.net/qinrenzhi/article/details/86599860
包括改了项目属性
任没有解决,求指点
解决啦,
#include<iostream>
#include<process.h>
#include<stdio.h>
using namespace std;
FILE* fp;
void main()
{
errno_t err;
char ch; //定义file结构指针变量
if ((err = fopen_s(&fp,"datafile.txt", "r"))!=0) //打开并测试文件
{
cout << "file cannot be opened" << endl;
exit(1); //若不成功退出
}
while ((ch = fgetc(fp)) != EOF) //读文件并测试是否文件尾
fputc(ch, stdout); //输出到显示器
fclose(fp);
}
参考https://baike.baidu.com/item/fopen_s/6183225?fr=aladdin