gpt4 book ai didi

C++ 对象段错误(核心转储)错误

转载 作者:行者123 更新时间:2023-12-02 10:36:37 25 4
gpt4 key购买 nike

我是 C++ 新手,所以请放轻松,所以我有以下类(class):

class DATA
{
private:
char* Name;
char* Address;
int Id;
void initData(int size=200)
{
(this->Name)=(char*)malloc(sizeof(char)*size);
(this->Address)=(char*)malloc(sizeof(char)*size);
}
public:
void readData(void)
{
this->initData();
printf("Enter Name: "); scanf("%s\n",this->Name);
printf("Enter Address: "); scanf("%s\n",this->Address);
printf("Enter Id: "); scanf("%d\n",&(this->Name));
}
void printData(void)
{
printf("Name: %s",this->Name);
printf("Address: %s",this->Address);
printf("Id: %d",this->Id);
}
};


但是当我初始化一个对象然后调用公共(public)方法时,会发生以下情况:
Enter Name: John Doe
Enter Address: 53 Olive, St.
Segmentation fault (core dumped)

所以,如果有人能告诉我为什么(我知道什么是段错误,但不明白为什么会在这里)。

最佳答案

在方法readData

     printf("Enter Id: "); scanf("%d\n",&(this->Name));

您应该阅读 Id这是一个整数,但读入字符串 this->Name反而。任何一个
scanf("%d\n",&(this->Id));

由于您使用的是C++,所以使用起来更方便、更容易 cincout比 C 风格 scanfprintf并遇到这类问题。
cin >> Id;

关于C++ 对象段错误(核心转储)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60000668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com