C++字符串输入

来源:百度知道 编辑:UC知道 时间:2024/05/27 04:36:15
#include <iostream.h>
#include <iomanip.h>
struct stu
{
int num;
char *name;
char sex;
float score;
}boy;
main()
{
cin>>boy.num>>boy.name>>boy.sex>>boy.score;
cout<<boy.num<<"\n"<<boy.name<<"\n"<<boy.sex<<"\n"<<boy.score<<"\n";
}
运行没有错误.但是当我输入"101 zhangping m 89.5"时.却无法正常运行?请大侠们帮忙看看!

问题在你的指针定义上:char *name;
这个定义本身没有错,但是它只负责声明name这个指针变量,没有为它分配内存空间(由于是在main外面进行的声明,在c++标准中,指针会被初始化为0x00000000),所以当你在main里面cout<<boy.name;的时候取的地址是0x00000000,也就是空,所以运行会出错。因此不能说运行没有错误,是编译链接没有错误,因为编译器不会对你的指针是不是分配了足够的内存空间进行检查。
修改方法:main后面加一句:
main()
{
boy.name = new char[128]; // 为boy.name分配空间即可
cin>>boy.num>>boy.name>>boy.sex>>boy.score;
cout<<boy.num<<"\n"<<boy.name<<"\n"<<boy.sex<<"\n"<<boy.score<<"\n";
delete boy.name; // 释放内存
}