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

这里的问题是您试图将指针传递给期望非指针值的参数。的第一个参数writeToFileFILE,但参数dataOut是类型FILE*。为了完成这项工作,您需要使它们都成为指针值

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