栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

练习文本文件的创建输出和拷贝 C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

练习文本文件的创建输出和拷贝 C++

 练习对已知文件格式文件的读取和写入。

1)创建一个文本文件,在文件中输出一个九九乘法表。

2)编写一个程序,将一个文本文件拷贝到另外一个文件中。



1. 创建文本文件并输出

fopen()函数  打开文件

fopen()

函数原型:FILE* fopen(char *path, char *mode);   //(文件路径和文件名,文件打开方式)

函数说明:打开一个文件, 返回该文件的指针变量,通常用文件指针来接收。

FILE* fp;//定义一个文件指针
fp = fopen("C://MulTable.txt", "w");//用只写方式打开文件

 fp指向该文件。通常会接着判断文件打开是否成功。

常见文件打开方式


b: 以二进制方式打开文件
t: 以文本方式打开文件(默认方式下以文本方式打开文件)
r:以只读的方式打开文件,只允许读,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部
r+: 以可读可写的方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部
rb+: 以可读可写、二进制方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部
rt+: 以可读可写、文本方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部
w: 以只写的方式打开文件,只允许写,若文件存在,文件中原有内容会被清除;若文件不存在,则创建文件,打开成功后返回文件指针,位置指针指向文件头部
w+: 以读写的方式打开文件,允许读写,若文件存在,文件中原有内容会被清除;若文件不存在,则创建文件,打开成功后返回文件指针,位置指针指向文件头部
a: 以追加、只写的方式打开文件,只允许写。若文件存在,则追加的内容添加在文件末尾,若文件不存在,则创建文件。打开成功后返回文件指针,位置指针指向文件头部(注意很多书上或资料上讲述追加方式打开成功后位置指针指向文件末尾是错误的)
a+: 以追加、可读写的方式打开文件,允许读写。若进行读操作,则从头开始读;若进行写操作,则将内容添加在末尾。若文件不存在,则创建文件。打开成功后返回文件指针,位置指针指向文件头部。
 

向文件中写入数据

部分函数:

fputs()

函数原型:int fputs(char *s, FILE *stream);

函数说明:将一行字符串写入到文件中。

fprintf()

函数原型:fsprintf(FILE *stream, const char *format, ...);

函数说明:格式化字符串到文件中。

 如:

fprintf(fp, "%d * %d = %d t", j, i, j * i);

 

 fclose()函数  关闭文件

fclose()

函数原型:int fclose(FILE *stream);   // (文件指针)

函数说明:关闭一个文件

fclose(fp);

如果打开文件最后不关闭文件可能会造成数据丢失。

2. 拷贝文本文件

先定义被拷贝文件的指针和需要拷贝到的文件的指针。

	FILE* fp1 = fopen("C://MulTable.txt", "r");//打开文本文件只读
	FILE* fp2 = fopen("C://MTCopy.txt", "w");//打开文本文件只写  存在则清除,不存在则创建

 

 读取fp1指向文件的数据并写入到fp2指向的文件中

	char buf;
	while ((buf=fgetc(fp1))!=EOF)//逐个字符读入并输出到拷贝文件中,直到读到文件尾
	{
		fputc(buf, fp2);
	}

 fgetc()

函数原型:int fgetc(FILE *stream);   // (文件指针)

函数说明:从文件中读取一个字符。出错或文件尾返回EOF。

 fputc()

函数原型:int fputc(int c, FILE *stream);   // (字符,文件指针)

函数说明:将一个字符写入到文本文件中。

 

 

全部代码
#define _CRT_SECURE_NO_WARNINGS 1 
#include
#include
#include
using namespace std;


void CopyTxt()//拷贝文本文件
{
	FILE* fp1 = fopen("C://MulTable.txt", "r");//打开文本文件只读
	FILE* fp2 = fopen("C://MTCopy.txt", "w");//打开文本文件只写  存在则清除,不存在则创建

	char buf;
	while ((buf=fgetc(fp1))!=EOF)//逐个字符读入并输出到拷贝文件中,直到读到文件尾
	{
		fputc(buf, fp2);
	}	

	fclose(fp1);
	fclose(fp2);
}


void CreatMulTable()//创建文本文件 输出九九乘法表
{
	FILE* fp = fopen("C://MulTable.txt", "w");	//打开文本文件只写

	if (fp == NULL)
	{
		cout << "打开失败" << endl;
		return;
	}
	else cout << "打开成功" << endl;

	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			fprintf(fp, "%d * %d = %d t", j, i, j * i);//向文件中写入数据
		}
		fprintf(fp, "n");
	}
	
	fclose(fp);//关闭文件
}


int main() {
	CreatMulTable();
	CopyTxt();

	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947366.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号