问题描述】
建立两个磁盘文件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’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’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;
}