我在玩C中的文件I/O我试图使用fgets从一个文件读取数据并将其输出到另一个文件问题是它总是返回空值,因此不会将任何内容复制到输出文件这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fpIn;
    FILE *fpOut;

    if ((fpIn = fopen("C:\\testIn.txt", "r") == NULL))
    {
        printf("Cannot open input file!\n");
        exit(1);
    }

    if ((fpOut = fopen("C:\\testOut.txt", "a") == NULL))
    {
        printf("Cannot open output file!\n");
        exit(1);
    }

    char buffer[128];
    while (fgets(buffer, 128, fpIn) != NULL)
    {
        fputs(buffer, fpOut);
    }

    fclose(fpIn);
    fclose(fpOut);

    system("PAUSE");
    return 0;
}

还有一件事,当我尝试在fopen的第二个arg中使用“a+f”时,它不起作用。

最佳答案

if ((fpOut = fopen("C:\\testOut.txt", "a") == NULL))

应该是
if ((fpOut = fopen("C:\\testOut.txt", "a")) == NULL)

输入文件也是。
如果你是C新手,我建议你一次只做一件事,以便更容易地追踪问题。
例如
fpOut = fopen("C:\\testOut.txt", "a");
if(fpOut == NULL) {
    ...

10-04 14:39