在尝试编译我的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
有什么想法吗?
这是要点:
答案 0 :(得分:1)
根据fgets()
的{{3}},语法为
char *fgets(char *s, int size, FILE *stream);
所以,对fgets()
的调用需要有三个参数。
在您的代码while (fgets(str).....
中,它只有一个。