0

Cの概念に問題があります。これは私の「プログラミングの特別なトピック: Linux と C」クラスの課題の一部です。特定の文字列をファイルに書き込む関数を作成しようとしています (これは会計プログラムであり、関数はページのヘッダーとフッターを書き込みます)、エラーが発生します。

私のコード:

#include <stdio.h>

void writeToFile(FILE dataOut, char content[])
{
    fprintf(dataOut, content);
}

void main()
{
    FILE *dataOut;
    dataOut = fopen("testWrite.txt", "w");
    writeToFile(dataOut, "Leave no bars un-foo'd.");
}

コンパイルしようとすると表示されるエラー メッセージ:

testWrite.c: In function ‘writeToFile’:
testWrite.c:5:2: error: incompatible type for argument 1 of ‘fprintf’
In file included from testWrite.c:1:0:
/usr/include/stdio.h:357:12: note: expected ‘struct FILE * __restrict__’ but 
argument is of type ‘FILE’
testWrite.c: In function ‘main’:
testWrite.c:12:2: error: incompatible type for argument 1 of ‘writeToFile’
testWrite.c:3:6: note: expected ‘FILE’ but argument is of type ‘struct FILE *’

これを修正する方法がわかりません。ポインターを少し操作してみましたが、エラー メッセージは変わりませんでした。このコードは、私のコードで実行したいことの孤立した例です。実際のコードを見たい場合は、お知らせください。これは、私が扱っていたことを表現するためのより明確な方法のように思えました。

4

2 に答える 2

5

関数を変更して、構造体自体ではなくポインターを受け入れるようにします。

void writeToFile(FILE * dataOut, char content[])
于 2013-03-05T00:58:55.240 に答える
4

ここでの問題は、ポインター以外の値を予期しているパラメーターにポインターを渡そうとしていることです。の最初のパラメーターwriteToFileは ですFILEが、パラメーターdataOutの型はFILE*です。これを機能させるには、両方のポインター値にする必要があります

void writeToFile(FILE* dataOut, char content[])
于 2013-03-05T01:00:17.557 に答える