实现两个文件交换的目的,程序代码如何避免出错呢

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;
}


额,磁铁硬盘是个什么硬盘