C++ 如何调试C++;使用数组编程? #包括 #包括 第XIIB类 { 字符名[30]; 智力年龄; 整流罩; 浮标; 公众: void getdata(字符a[30],整数i,整数j,浮点k) { 名称[30]=a[30]; 年龄=i; 滚动=j; 分数=k; } 作废数据(作废) { cout
您的getdata有问题,无法像那样复制字符数组,请尝试以下操作C++ 如何调试C++;使用数组编程? #包括 #包括 第XIIB类 { 字符名[30]; 智力年龄; 整流罩; 浮标; 公众: void getdata(字符a[30],整数i,整数j,浮点k) { 名称[30]=a[30]; 年龄=i; 滚动=j; 分数=k; } 作废数据(作废) { cout,c++,arrays,class,object,C++,Arrays,Class,Object,您的getdata有问题,无法像那样复制字符数组,请尝试以下操作 #include<iostream.h> #include<conio.h> class XIIB { char name[30]; int age; int roll; float marks; public: void getdata(char a[30],int i,int j,float k) { name[30]=a[30];
#include<iostream.h>
#include<conio.h>
class XIIB
{
char name[30];
int age;
int roll;
float marks;
public:
void getdata(char a[30],int i,int j,float k)
{
name[30]=a[30];
age=i;
roll=j;
marks=k;
}
void putdata(void)
{
cout<<"Name:"<<name<<endl;
cout<<"Age:"<<age<<endl;
cout<<"Roll:"<<roll<<endl;
cout<<"Marks:"<<marks<<endl;
}
};
const int size=5;
XIIB student[size];
void main()
{
char x[30];
int ag;
int rno;
float mrks;
for(int p=0;p<size;p++)
{
cout<<"Enter Name,Age,Roll and Marks of Student"<<p+1<<endl;
cin>>x>>ag>>rno>>mrks;
student[p].getdata(x,ag,rno,mrks);
}
for(p=0;p<size;p++)
{
cout<<"Student"<<p+1<<endl;
student[p].putdata();
}
getch();
}
而不是
void getdata(char a[30],int i,int j,float k)
{
strcpy(name,a); //change this line
age=i;
roll=j;
marks=k;
}
在void getdata(char a[30],int i,int j,float k)
:name[30]=a[30];
不符合您的期望,是未定义的行为;(这将a
的第31个字符复制到name
的第31个字符,而两个字符串的长度都只有30个字符。)你必须用strcpy(name,a);替换
name[30]=a[30];
,这应该可以用。name[30]=a[30];
这是未定义的行为,所有其他代码都是不相关的,因为它在第一行爆炸。array[30]
有30个元素,最后一个是array[29]它不是2016,不是1996,停止使用<代码> <代码>,即使它是1916,这个代码有可怕的(几乎不存在的)格式。因为你使用C++,而不是字符数组,你可以使用<代码> STD::String 这个名字。@ NICMAN将不编译。<代码> No.<代码>评估该数组的地址不是LValk。
name[30]=a[30];