我有一个要求
的作业a.) Prompts the user to input the names of 3 files: two input files
and an output file.
b.) Reads in the two input files line by line and compares the two
lines.
c.) For each line in the inputs, the output should have the line
number, a colon (':'), and either "OK" if the lines match or "DIFF" if
the lines are different.
The input files may be of different lengths.
- Your program should be case-sensitive, so you do NOT need to worry about converting
text to lowercase or uppercase.
For example:
input1:
abc
def
g h i
input2:
abc
DEf
ghi
uub
output:
1:OK
2:DIFF
3:DIFF
4:DIFF
基本上我已经编写了代码,但是每次我尝试在Putty上运行它时,它都能正确编译。
:: a.out
Please enter input file name: abc
terminate called after throwing an instance of 'std::runtime_error'
what(): Can't open input file: abc
Abort (core dumped)
所以在我输入文件名之前,它会收到返回错误,我根据Stroustrup的书写了输入和输出的每一部分。究竟我错过了什么,或者我只是做错了什么? 谢谢。
#include "std_lib_facilities_3.h"
int main()
{
//Input 1
cout << "Please enter input file name: ";
string name;
cin >> name;
ifstream ist1(name.c_str());
if (!ist1) error("Can't open input file: ",name);
//Input 2
cout << "Please enter another input file name: ";
string name2;
cin >> name2;
ifstream ist2(name2.c_str());
if (!ist2) error("Can't open input file name: ",name2);
//Output
cout << "Please enter name of output file: ";
string oname;
cin >> oname;
ofstream ost(oname.c_str());
if (!ost) error("Can't open output file: ",oname);
string s, t;
int i = 1;
int flag = 1;
while(true)
{
if (!getline(ist1, s)) {flag = 1; break;}
if (!getline(ist2, t)) {flag = 2; break;}
ost << i;
if (s == t)
ost << ": OK\n";
else
ost << ": DIFF\n";
i++;
}
if (flag == 2) {
ost << i << ": DIFF\n";
i++;
while (getline(ist1, s)) {ost << i << ": DIFF\n"; i++;}
}
if (flag == 1) {
while (getline(ist2, t)) {ost << i << ": DIFF\n"; i++;}
}
return 0;
}
答案 0 :(得分:0)
您的程序没问题,但您需要确保输入整个文件名,包括文件扩展名。我能够使用这些文件成功运行您的程序:
program.cc
- 您的计划的来源program
- 您的程序,已编译 file-a.txt
- 文本文件:
Hello, world!
This is a file.
This line is different.
But same again.
file-b.txt
- 另一个文字文件:
Hello, world!
This is a file.
This line differs from file A.
But same again.
然后我能够成功运行你的程序:
$ ./program
Please enter input file name: file-a.txt
Please enter another input file name: file-b.txt
Please enter name of output file: diffed.txt
使用此输出成功创建了diffed.txt
:
1: OK
2: OK
3: DIFF
4: OK