警告初始化从指针生成整数,而不使用fgets强制转换

时间:2017-01-11 11:57:40

标签: c casting warnings fgets

我想要读取stdin上的字符串,所以我选择了fgets。但是我得到了这个警告:初始化从指针生成整数而没有强制转换。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>

#define MAX_LINIA 301

int main(int argc,char *argv[]){
    char *buffer;
    printf("Enter the input\n");
    if (fgets(buffer,MAX_LINIA-1,stdin)==NULL) printf("Error")
    else printf("%s", buffer);
    return 0:
}

1 个答案:

答案 0 :(得分:0)

您正在使用buffer而未初始化它,这会导致未定义的行为。

您不需要使用指针,而是可以使用char数组(给定已定义的最大大小):

char buffer[MAX_LINIA];

然后将fgets更好地写成:

if(fgets(buffer,sizeof(buffer),stdin)==NULL)