C++第八次实验文件读写

问题描述】

建立两个磁盘文件f1.txt和f2.txt,编写程序实现以下工作:

(1)从文件in.txt输入20个整数,分别存放在两个磁盘文件f1.txt和f2.txt中(每个文件中放10个整数);

(2)从f1.txt读入10个数,然后存放到f2.txt文件原有数据的后面;

(3)从f2.txt中读入20个整数,将它们按照从小到大的顺序存放到f2.txt(不保留原来的数据)。

【输入形式】

in.txt中包含以下20个数字:

11 22 55 66 33 44 77 88 99 10 20 50 60 30 40 70 80 90 222 111 

【输出文件】

输出文件为当前目录下的f1.txt和f2.txt。

输出文件f1.txt内容为:

11 22 55 66 33 44 77 88 99 10

输出文件f2.txt内容为:

10 11 20 22 30 33 40 44 50 55 60 66 70 77 80 88 90 99 111 222

#include<bits/stdc++.h>
using namespace std;
int a[22],b;
int main()
{
	ifstream f("./in.txt");
	if (!f)
	{
		cerr << "文件打开失败" << endl;
	}
	for (int i = 0; i < 20; i++)f >> a[i];
	f.close();
	ofstream f1("./f1.txt");
	ofstream f2("./f2.txt", ios::out);
	for (int i = 0; i < 10; i++)f1 << a[i]<<' ';
	for (int i = 10; i < 20; i++)f2 << a[i]<<' ';
	f1.close();
	f2.close();
	ifstream f11("./f1.txt");
	ofstream f22("./f2.txt", ios::out | ios::app);
	for (int i = 0; i < 10; i++)
	{
		f11>>b;
		f22 << b << ' ';
	}
	f22.close();
	f11.close();
	ifstream f111("./f2.txt");
	for (int i = 0; i < 20; i++)f111 >> a[i];
	sort(a, a + 20);
	f111.close();
	ofstream f222("./f2.txt", ios::out);
	for (int i = 0; i < 20; i++)f222 << a[i] << ' ';
	f22.close();
}

 

【问题描述】

编写程序将一个指定文件中某一字符串替换为另一个字符串。要求:(1)被替换字符串若有多个,均要被替换;(2)指定的被替换字符串,大小写无关。

【输入形式】

给定文件名为filein.txt。从控制台输入两行字符串(不含空格,行末尾都有回车换行符),分别表示被替换的字符串和替换字符串。

【输出形式】

将替换后的结果输出到文件fileout.txt中。

【样例输入】

从控制台输入两行字符串:

in
out

文件filein.txt的内容为:

#include <stdio.h>
void main()
{
    FILE * IN;
    if((IN=fopen("in.txt","r"))==NULL)
    {
       printf("Can&rsquo;t open in.txt!");
       return;
    }
    fclose(IN);
}

【样例输出】

文件fileout.txt的内容应为:

#outclude <stdio.h>
void maout()
{
    FILE * out;
    if((out=fopen("out.txt","r"))==NULL)
    {
       prouttf("Can&rsquo;t open out.txt!");
       return;
    }
    fclose(out);
}

【样例说明】

输入的被替换字符串为in,替换字符串为out,即将文件filein.txt中的所有in字符串(包括iN、In、IN字符串)全部替换为out字符串,并输出保存到文件fileout.txt中。

#include<bits/stdc++.h>
using namespace std;
char f[10000];
int lenf,flag;
string in, out;
int main()
{
	ifstream f1("filein.txt");
	ofstream f2("fileout.txt");
	if(!f1)
		cerr << "文件打开失败" << endl;
	cin >> in >> out;
	char ch;
	while (f1.get(ch))
	{
		f[lenf++] = ch;
	}
	for (int i = 0; i < lenf; i++)
	{
		int flag = 1;
		if (tolower(f[i]) == tolower(in[0]))
		{
			int k = i + 1;
			if (i + in.length() > lenf)flag = 0;//不判断的话会有测试点过不了
			for (int j = 1; j < in.length(); j++)
			{
				if (k < lenf && tolower(f[k]) != tolower(in[j]))
					flag = 0;
				k++;
			}
			if (flag)
			{
				for (int l = 0; l < out.length(); l++)
					f2 << out[l];
				i = i + in.length() - 1;
			}
			else
				f2 << f[i];
		}
		else 
			f2 << f[i];
	}
	f1.close(), f2.close();
	return 0;
}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值