C语言求思路,是读取ssd硬盘的文件进行一个交换,不是读取普通磁铁硬盘的交换,读取第一个文件,然后读取第二个文件,读取了第一个文件以后把第一个文件直接写入第二个文件,把第二个文件直接读取以后,然后写入第一个文件。实现两个文件交换的目的,程序代码如何避免出错呢
跟刚刚的c++不同,c得用文件流指针,怎么防止出错,要么看ide的提示要么检查下返回值
#include <stdio.h>
#define BUFFER_SIZE 1024
void swapFiles(const char* file1, const char* file2) {
// 打开第一个文件和第二个文件
FILE* fp1 = fopen(file1, "rb");
FILE* fp2 = fopen(file2, "rb");
if (fp1 == NULL || fp2 == NULL) {
printf("无法打开文件\n");
return;
}
// 创建临时文件
FILE* temp = tmpfile();
if (temp == NULL) {
printf("无法创建临时文件\n");
fclose(fp1);
fclose(fp2);
return;
}
// 读取第一个文件的内容到临时文件
char buffer[BUFFER_SIZE];
size_t bytesRead;
while ((bytesRead = fread(buffer, 1, BUFFER_SIZE, fp1)) > 0) {
fwrite(buffer, 1, bytesRead, temp);
}
// 关闭第一个文件
fclose(fp1);
// 将第二个文件的内容写入第一个文件
fseek(fp2, 0, SEEK_SET);
FILE* fp1_out = fopen(file1, "wb");
if (fp1_out == NULL) {
printf("无法打开第一个文件进行写入\n");
fclose(temp);
fclose(fp2);
return;
}
while ((bytesRead = fread(buffer, 1, BUFFER_SIZE, fp2)) > 0) {
fwrite(buffer, 1, bytesRead, fp1_out);
}
// 关闭第二个文件和第一个文件的写入流
fclose(fp2);
fclose(fp1_out);
// 将临时文件的内容写入第二个文件
fseek(temp, 0, SEEK_SET);
FILE* fp2_out = fopen(file2, "wb");
if (fp2_out == NULL) {
printf("无法打开第二个文件进行写入\n");
fclose(temp);
return;
}
while ((bytesRead = fread(buffer, 1, BUFFER_SIZE, temp)) > 0) {
fwrite(buffer, 1, bytesRead, fp2_out);
}
// 关闭临时文件和第二个文件的写入流
fclose(temp);
fclose(fp2_out);
printf("文件交换完成\n");
}
int main() {
const char* file1 = "file1.txt";
const char* file2 = "file2.txt";
swapFiles(file1, file2);
return 0;
}
额,磁铁硬盘是个什么硬盘