2013-03-05 54 views
0

我遇到了C概念的问题。我将在前面,这是我的“编程专题:Linux和C”课程的一部分。我试图让函数写入特定的字符串到一个文件(这是一个会计程序,功能写页面页眉和页脚),我得到一个错误。C“参数的类型是'struct file *'”

我的代码:

#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 *’ 

我不知道如何解决这个问题。我试过操纵指针,但它没有改变错误信息。此代码是我希望我的代码执行的独立示例;如果你想看到实际的代码,请告诉我。这似乎是一种更清晰的方式来表达我正在处理的内容。

+0

它好像你跳枪,使非常基本的错误结果;在学习函数之前,尝试学习对象类型。 – Sebivor 2013-03-05 01:57:29

+0

如果我自己学习,我会慢慢学习,并且学得更深入;然而,我正处于一个时间限制,因此,有时我只需要一个问题的答案,而不必阅读教科书章节(或等同于互联网)。就像我在另一个评论中所说的那样,在我问这个问题之前,我确信我已经尝试了正确的解决方案。我对对象类型有一个很好的处理方式,但我认为还有更多的东西不仅仅是指针,所以我问。 – Chance 2013-03-05 18:44:57

回答

5

更改函数接受一个指针,而不是结构本身:

void writeToFile(FILE * dataOut, char content[]) 
+0

你知道,我可以发誓我尝试过,但我猜不是。无论哪种方式,我都可以在十分钟内接受你的答案。谢谢你的帮助! – Chance 2013-03-05 01:02:30

4

这里的问题是,你正试图将指针传递给需要一个非指针值的参数。 writeToFile的第一个参数是FILE,但参数dataOut的类型为FILE*。为了使这项工作,你需要让他们两个指针值

void writeToFile(FILE* dataOut, char content[])