|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么会报错呢?是什么语法出问题?
我的代码
#include <stdio.h>
struct Student
{
int id;
int sex;
long long int qq;
char* email;
};
int main()
{
int times;
printf("请输入需要录入的数据数量:");
scanf("%d",×);
struct Student array[times];
for(int i = 1 ; i <= times ; i++)
{
printf("请输入第 %d 个学生的数据...\n",i);
printf("请输入学生ID:");
scanf("%d",&array[i-1].id);
printf("请输入学生性别(1/0):");
scanf("%d",&array[i-1].sex);
printf("请输入学生QQ号:");
scanf("%lld",&array[i-1].qq);
printf("请输入学生email:");
scanf("%s",array[i-1].email);
}
printf("=====数据录入完毕=====\n");
printf("以下是录入的所有男生的数据:\n");
for(int i = 1 ; i <= times ; i++)
{
if (array[i-1].sex == 1)
{
printf("ID:%d\n",array[i-1].id);
printf("QQ:%lld\n",array[i-1].qq);
printf("Email:%s\n",array[i-1].email);
}
}
printf("以下是录入的所有女生的数据:\n");
for(int i = 1 ; i <= times ; i++)
{
if (array[i-1].sex == 0)
{
printf("ID:%d\n",array[i-1].id);
printf("QQ:%lld\n",array[i-1].qq);
printf("Email:%s\n",array[i-1].email);
}
}
}
本帖最后由 jackz007 于 2021-11-7 19:47 编辑
这样定义 emal 会只分配一个指针的存储空间(32 位程序占 4 个字节,64 位的占 8 个字节)供保存 email ,而不会分配字符串的存储空间,创建结构体时,email 会被初始化为 NULL,往内存地址为 NULL 的地方写字符串,程序当然就完蛋了。
- struct Student
- {
- . . . . . .
- char email[256] ; // 【修改这里】
- };
复制代码
|
|