200826-C语言打印文件中的文本内容

1. Description

在桌面上创建一个txt文件,输入一些文本内容,我们的任务是把文本内容打印出来。
在这里插入图片描述
在编程之前,关于一些函数的定义我们需要了解下。

fopen

fopen的函数原型为: FILE *fopen(const char *filename, const char *mode);其功能是使用给定的模式 mode 打开 filename 所指向的文件。文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回 NULL,并把错误代码存在 error 中。该函数位于C 标准库<stdio.h>中。 [1]

fseek

int fseek(FILE stream, long offset, int fromwhere);函数设置文件指针stream的位置。
如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2
102410241024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。
fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。

ftell

函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。
该函数对大于231-1文件,即:2.1G以上的文件操作时可能出错。

rewind

C 程序中的库函数,功能是将文件内部的指针重新指向一个流的开头。

fclose

fclose是一个函数名,功能是关闭一个流。注意:使用fclose()函数就可以把缓冲区内最后剩余的数据输出到内核缓冲区,并释放文件指针和有关的缓冲区。
函数原型:int fclose( FILE *fp );
返回值:如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。(如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。)

2. Code&Debug

使用的IDE是Viusal Studio 2019,创建一个空项目的控制台,然后创建一个头文件main.h。

//main.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

再创建一个源文件main.c开始编程。

//mian.c
#include"main.h"

int main(void)
{
	//打开文件
	FILE *pfile = fopen("C:/Users/0xFingerprint/Desktop/me.txt", "rb");
	if (pfile == NULL) {
		printf("open file failed!\n");
		exit(0);
	}

	//读取文件长度,读完后把文件指针复位到开头
	fseek(pfile,0, SEEK_END);
	int file_length = ftell(pfile);
	rewind(pfile);

	//申请一段内存空间用来放文件中的文本内容,并置零
	int text_length = file_length * sizeof(char) + 1;
	char* text_buffer = (char*)malloc(text_length);
	memset(text_buffer, 0, text_length);

	//把文件文本内容读到申请的内存空间中
	int read_length = fread(text_buffer, 1, file_length, pfile);
	if (read_length != file_length) {
		printf("read file failed!\n");
		exit(0);
	}

	//打印文件文本内容,释放申请的内存空间,关闭文件流
	printf(text_buffer);
	free(text_buffer);
	fclose(pfile);
}

然后点击生成会出现报错'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
在这里插入图片描述
我们打开项目属性,然后找到预处理器定义编辑添加_CRT_SECURE_NO_WARNINGS即可。
在这里插入图片描述

3. Show

在这里插入图片描述

  • 14
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值