1

我正在使用 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;
}

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

4

1 回答 1

8
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) {
    ...
于 2012-07-18T02:00:41.813 回答