C:fgets总是为NULL

Mat*_*att 1 c io

我正在使用C语言中的文件I/O.我正在尝试使用fgets从一个文件中读取数据并将其输出到另一个文件.问题是它总是返回NULL,因此没有任何东西被复制到输出文件.这是我的代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

另一件事; 当我尝试在第二个arg中使用"a + f"进行fopen时,它没有用.

Joh*_*136 8

if ((fpOut = fopen("C:\\testOut.txt", "a") == NULL))
Run Code Online (Sandbox Code Playgroud)

应该

if ((fpOut = fopen("C:\\testOut.txt", "a")) == NULL)
Run Code Online (Sandbox Code Playgroud)

输入文件上相同.如果您是C新手,我建议您一次做一件事,以便更容易追踪问题.例如

fpOut = fopen("C:\\testOut.txt", "a");
if(fpOut == NULL) {
    ...
Run Code Online (Sandbox Code Playgroud)