繁体   English   中英

使用 fgets() 从用户那里获取输入后的 SegFault

[英]SegFault after taking input from user with fgets()

所以我正在编写一个程序,我想在其中获取客户的信息,但是在我输入名称后,出现了 Segmetation 错误(核心愚蠢),我不明白为什么,我之前运行过类似的代码并且它运行得很好。 这是我的代码:

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

struct Customer
{
    char* first_name;
    char* last_name;
    int   age;
    char* password;
};

struct Customer customer;

void get_customer_info()
{
    printf("Enter your first name: ");
    fgets(customer.first_name, 30, stdin);
}

int main(void)
{
    get_customer_info();

    printf("%s\n", customer.first_name);

    return 0;
}

这是典型的初学者错误。 您没有为struct的字段分配内存。

尝试将结构重写为:

struct Customer
{
    char first_name[100];
    char last_name[100];
    int   age;
    char password[100];
};

或者,您可以使用malloc()分配内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM