2021-01-27

文件

文件操作

文件结构指针
在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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.头发掉不完.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值