在C中编译Lisp interperater时收到警告

时间:2015-01-27 20:24:27

标签: c

在尝试编译我的interperater时,我一直收到一个使用gets()警告,并且在终端中没有输出任何内容。我将gets()更改为fgets(),但仍然没有输出任何内容并给我一个错误:

$ ./littleLisp 
warning: this program uses gets(), which is unsafe.
5.000000
littleLisp.c:16:18: error: too few arguments to function call, expected 3, have 1
        while (fgets(str) && strcmp(str, "")) {
               ~~~~~    ^
/usr/include/stdio.h:238:1: note: 'fgets' declared here
char    *fgets(char * __restrict, int, FILE *);
^
1 error generated.
make: *** [littleLisp] Error 1
$ make littleLisp
cc     littleLisp.c   -o littleLisp
littleLisp.c:16:18: error: too few arguments to function call, expected 3, have 1
        while (fgets(str) && strcmp(str, "")) {
               ~~~~~    ^
/usr/include/stdio.h:238:1: note: 'fgets' declared here
char    *fgets(char * __restrict, int, FILE *);
^
1 error generated.
make: *** [littleLisp] Error 1

有什么想法吗?

这是要点:

https://gist.github.com/rahul1346/8596118b834ecf41b1d9

1 个答案:

答案 0 :(得分:1)

根据fgets()的{​​{3}},语法为

char *fgets(char *s, int size, FILE *stream);

所以,对fgets()的调用需要有三个参数。

在您的代码while (fgets(str).....中,它只有一个。