我希望读取一个文件并将其内容复制到作为命令行参数传递的所有文件中,例如:
main.exe file.txt todo.txt app.txt foo.txt
从file1读取数据,并将其内容复制到todo、app和foo。如果文件不存在,请提示用户,如果用户想要创建文件,请输入。
ReadFile函数工作并返回文件数据。
代码:
char* ReadFile(const char* filename) {...}
void WriteFile(const char* filename, const char* data) {
FILE* fptr = fopen(filename, "r+");
if (fptr)
std::cout << filename << " opened Succesfully.\n";
else {
std::cout << "\nFile not found! Do you want to create one?\n";
std::cout << "Type Y, y or 1 to create the file that doesn't exist press any other key to exit\n";
std::string input;
std::cin >> input;
while (input.at(0) == 'Y' || input.at(0) == 'y' || input.at(0) == '1') {
fptr = fopen(filename, "w");
if (fptr) {
std::cout << filename << " created Succesfully\n";
break;
} else {
std::cout << "Error creating " << filename << std::endl;
break;
}
}
while (input.at(0) != 'Y' || input.at(0) != 'y' || input.at(0) != '1') {
exit(0);
}
}
while ((*data)) {
fputc(*data, fptr);
++data;
}
if (!fclose(fptr))
std::cout << filename << " closed\n";
else
std::cout << "Error closing " << filename << std::endl;
}
int main(int argv, const char* argc[]) {
const char* FileBuffer = ReadFile(argc[1]);
for (int i = 2; i < 10; ++i) {
if (argc[i] != (char)0 )
WriteFile(argc[i], FileBuffer);
}
return 0;
}
现在的问题是,每当我创建一个不存在的文件时,它就会打印:“成功创建的文件”并退出,但内容永远不会被复制
第二:我不能写入一个包含多个参数的文件(),该文件不存在示例:
main.exe file.txt todo.txt app.txt foo.txt
在这里,file.txt被成功地读取,然后它问我是否要创建一个文件,我输入"y“它打印”成功创建的文件“并退出,但内容从未被复制。
但是,如果文件存在,则代码工作正常,内容被复制到所有文件中。
注意:我没有使用fstream,因为我在读写方面有问题。
发布于 2020-09-19 00:42:17
这
while (input.at(0) != 'Y' || input.at(0) != 'y' || input.at(0) != '1')
总是正确的,所以程序总是退出,所以您打算编写
while (input.at(0) != 'Y' && input.at(0) != 'y' && input.at(0) != '1')
在将否定与and
或or
组合时,逻辑错误是常见的错误。
由于while循环的主体总是退出程序,因此编写if
语句而不是while
语句会更清楚一些。
if (input.at(0) != 'Y' && input.at(0) != 'y' && input.at(0) != '1')
exit(0);
https://stackoverflow.com/questions/63966820
复制相似问题