请问数组的有关问题
请教数组的问题
我现在是要建一个People 类,然后在声明一个Date 类,在Date 里面实现生日信息的输出,在People里,实现姓名,编号,性别,ID的输出,然后我写了下面的代码,我说的这段可能有点含糊不清了,但是不影响找出代码的BUG。
然后我编译通过,运行出现错误,请各位前辈赐教。
------解决思路----------------------
char name[11];
char number[8];
char sex[4];
char id[17];
------解决思路----------------------
strcpy_s的用法有问题,参考 http://blog.****.net/johnny710vip/article/details/6681160
------解决思路----------------------
长度太短,字符串最后一位是0,需要一个字节,比如“2013477”需要8个字节, 你的定义只有7
------解决思路----------------------
数组短了,最好这样定义
char name[11];
char number[7+1];
char sex[3+1];
char id[16+1];
预留一个字节存放字符串结束符,不然不知道字符串何时结束
搜索下strcpy_s的用法,网上有很详细的说明
我现在是要建一个People 类,然后在声明一个Date 类,在Date 里面实现生日信息的输出,在People里,实现姓名,编号,性别,ID的输出,然后我写了下面的代码,我说的这段可能有点含糊不清了,但是不影响找出代码的BUG。
#pragma once
#include "Date.h"
class People
{
private:
char name[11];
char number[7];
char sex[3];
char id[16];
public:
People();
People::People(char [],char [],char [] ,char []);
~People();
void show();
};
#include "People.h"
#include "Date.h"
#include <iostream>
#include <string>
using namespace std;
People::People(char n[],char num[],char s[],char i[])
{
strcpy_s(name,n);
strcpy_s(number, num);//出现断点
strcpy_s(sex, s);
strcpy_s(id, i);
}
People::~People()
{
cout << "析构了一个函数!" << endl;
}
void People::show()
{
cout << "构造了一个函数" << endl;
cout << "name=" << name << endl;
cout << "number=" << number << endl;
cout << "sex=" << sex << endl;
cout << "id=" << id << endl;
}
#pragma once
class Date
{
private:
int year;
int mouth;
int day;
public:
Date();
Date::Date(int year,int mouth,int day);
~Date();
void show();
};
#include "Date.h"
#include <iostream>
using namespace std;
Date::Date(int y, int m, int d)
{
year = y;
mouth = m;
day = d;
}
Date::~Date()
{
}
void Date::show()
{
cout << "shengri=" << year << "-" << mouth << "-" << day << endl;
}
#include <iostream>
#include "Date.h"
#include "People.h"
using namespace std;
int main()
{
Date bri[3] = {
Date(1995, 11, 12),
Date(1996, 4, 13),
Date(1994, 1, 13),
};
People emp[3] = {
People("yang", "2013477", "nan", "1206281912345678"),
People("yang", "2013477", "nan", "1206281912345678"),
People("yang", "2013477", "nan", "1206281912345678"),
};
for (int i = 0; i < 3; i++)
{
emp[i].show();
bri[i].show();
cout << "----------";
}
}
然后我编译通过,运行出现错误,请各位前辈赐教。
------解决思路----------------------
char name[11];
char number[8];
char sex[4];
char id[17];
------解决思路----------------------
strcpy_s的用法有问题,参考 http://blog.****.net/johnny710vip/article/details/6681160
------解决思路----------------------
char number[7];
char sex[3];
char id[16];
长度太短,字符串最后一位是0,需要一个字节,比如“2013477”需要8个字节, 你的定义只有7
------解决思路----------------------
数组短了,最好这样定义
char name[11];
char number[7+1];
char sex[3+1];
char id[16+1];
预留一个字节存放字符串结束符,不然不知道字符串何时结束
搜索下strcpy_s的用法,网上有很详细的说明