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の2番目の引数で「a+f」を使用しようとすると、機能しませんでした。

4

1 に答える 1

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

する必要があります

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

入力ファイルでも同じです。Cを初めて使用する場合は、問題の追跡を容易にするために、一度に1つのことを行うことをお勧めします。例えば

fpOut = fopen("C:\\testOut.txt", "a");
if(fpOut == NULL) {
    ...
于 2012-07-18T02:00:41.813 に答える