1. C++ 代码 (copy.cpp)
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main(int argc, char *argv[]){
if(argc != 3){
cerr<<"error: no source file or target file."<<endl;
exit(-1);
}
ifstream sourceFile(argv[1]);
ofstream targetFile(argv[2]);
if(!sourceFile || !targetFile){
cerr<<"error: sourceFile or targetFile open failed."<<endl;
exit(-1);
}
string line;
/*
while(sourceFile>>line){ //read a word each time
targetFile<<line;
}
*/
while(getline(sourceFile, line)){
targetFile<<line;
if(!sourceFile.eof()) targetFile<<endl;
}
sourceFile.close();
targetFile.close();
return 0;
}
2. Makefile
[root@node14 io]# cat Makefile
src=copy.cpp
dist=copy
sourceFile=source.tar.gz
targetFile=target.tar.gz
all:run
compile:${src}
g++ -g -w ${src} -o ${dist}
run:compile
./${dist} ${sourceFile} ${targetFile}
clean:
-rm ${targetFile}
-rm ${dist}
clear:
@if [ -f ${targetFile} ] && [ -f ${dist} ]; then\
rm ${targetFile};\
rm ${dist};\
fi
3. 执行
[root@node14 io]# make
[root@node14 io]# ll
[root@node14 io]# make clean 或者 make clear