Я изучаю C, и я родом из фона Java. Буду признателен, если бы у меня было какое-то руководство. Вот мой код:Как использовать FILE в качестве параметра для функции в C?
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
char *str = "test text\n";
FILE *fp;
fp = fopen("test.txt", "a");
write(fp, str);
}
void write(FILE *fp, char *str)
{
fprintf(fp, "%s", str);
}
Когда я пытаюсь скомпилировать, я получаю эту ошибку:
xxxx.c: In function ‘main’:
xxxx.c:18: warning: passing argument 1 of ‘write’ makes integer from pointer without a cast
/usr/include/unistd.h:363: note: expected ‘int’ but argument is of type ‘struct FILE *’
xxxx.c:18: error: too few arguments to function ‘write’
xxxx.c: At top level:
xxxx.c:21: error: conflicting types for ‘write’
/usr/include/unistd.h:363: note: previous declaration of ‘write’ was here
Любые мысли? Спасибо за ваше время.
Я думаю, что вы вызываете системный вызов ['write()'] (http://linux.die.net/man/2/write). Возможно, включите прототип над 'main()' и еще лучше, выберите имя, не используемое системным вызовом, пока вы на нем. – WhozCraig
Нет ничего плохого в вашей функции, проблема в том, что имя выбрано («write» используется в unistd.h) http://pubs.opengroup.org/onlinepubs/009695399/functions/write.html –
Спасибо всем, жаль, что это была долгая ночь. –