Fgets编译错误

Max*_*gal 0 c fgets

我坚持看似初学者的编译错误:

我的简单程序:

#include <stdlib.h>
#include <stdio.h>
#include "Tiles_Circular_Linked_List.h"

#define MAX_LINE_LENGTH 128;

int main(int argc, char **argv) {
    struct node *head_tail;
    FILE *file;
    /*char filename[] = "/home/student/Desktop/Studies/C/testing_fodder/tiles";*/

    argv++; /*go to second character-array argument*/

    file = fopen(*argv, "r");
    char *curr_line;

    fgets(curr_line, MAX_LINE_LENGTH, file);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用此命令编译它:

gcc -g -Wall -ansi launch_tiles.c -o tiles_prog

并得到这些错误:

launch_tiles.c:在函数'main'中:

launch_tiles.c:17:19:错误:预期')'之前';' 代币

launch_tiles.c:17:19:错误:函数'fgets'/usr/include/stdio.h:628:14的参数太少:注意:在这里声明

launch_tiles.c:9:8:警告:变量'file'设置但未使用[-Wunused-but-set-variable]

launch_tiles.c:8:15:警告:未使用的变量'head_tail'[-Wunused-variable]

我对错误感兴趣,而不是警告.

我可以算上三个我传递给它的论点,fgets并且不明白我在哪里想念括号,那么问题是什么?

谢谢!

Ste*_*mit 5

更改

#define MAX_LINE_LENGTH 128;
Run Code Online (Sandbox Code Playgroud)

#define MAX_LINE_LENGTH 128
Run Code Online (Sandbox Code Playgroud)

(没有;).容易犯错误.

C预处理器执行非常简单的文本替换,因此使用错误定义的宏,您最终会得到

fgets(curr_line, 128;, file);
Run Code Online (Sandbox Code Playgroud)

这显然是语法错误.

  • @MaxSegal不要犹豫使用'--save-temps'选项来查看预处理的源代码(它是'.''文件),它总是很有趣. (2认同)