c - 警告初始化从指针生成整数,无需使用 fgets 进行强制转换

标签 c casting warnings fgets

我想通过标准输入读取字符串,所以我选择了 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:
}

最佳答案

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

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

char buffer[MAX_LINIA];

fgets 最好写成:

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

关于c - 警告初始化从指针生成整数,无需使用 fgets 进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41590361/

相关文章:

将通用指针转换为 int 指针以进行优化

c - argc/argv 影响数组中的空字节?

c++ - 如何在GCC编译器中启用最高警告级别(Boost被大量使用)

php - 警告 : incorrect argument passed to function

sql - 为什么使用 CAST 时 VARCHAR 的默认长度为 30?

java - Java 中的转换如何使用模数

c++ - 如何将 char 数组转换为单个整数?

c# - 将 CRC16 计算从 C 转换为 C#

c - 位移是否取决于字节顺序?

c - 与函数调用和返回相关的全局变量访问