C程序中的fgets突然退出

Jok*_*ker -1 c fgets

为什么以下代码在运行时突然退出而不打印任何输出???

FILE *file;

file=fopen("filename","r");
 char *line;
 while (fgets(line,1000,file)!=NULL) {
   int i=0;
    int l=sizeof(line);
    printf("%d\n",l);
  }
Run Code Online (Sandbox Code Playgroud)

Har*_*ris 5

char *line;
Run Code Online (Sandbox Code Playgroud)

这是一个char指针,没有指向任何内存..

fgets(line,1000,file)!=NULL
Run Code Online (Sandbox Code Playgroud)

在这里,您尝试存储从中读取的字符串,而不是file为其分配内存

要做到这fgets()一点,在执行a a malloc()来分配内存之前

line = malloc(1000);
Run Code Online (Sandbox Code Playgroud)

或者,将line变量声明为char数组,就像这样

char line[1000];
Run Code Online (Sandbox Code Playgroud)

  • 因为sizeof并不意味着测量字符串长度.使用strlen. (4认同)