查询结构数组异常
[解决办法]
第一个问题:
char *cc = (char*)malloc(1024);
//#include "stdafx.h"
//#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _student
{
char *name;
int stdNum;
int age;
char *birthday;
char *address;
char *Other;
}student,*pStudent;
char *searchStudent(char *name);
char *cc = NULL;// = (char*)malloc(1024);
int main(int argc, char* argv[])
{
printf("%s\n",searchStudent("张三"));
free(cc);
//system("pause");
return 0;
}
char *searchStudent(char *name)
{
cc = (char*)malloc(1024);
student std[3];
std[0].name ="张三";
std[0].stdNum = 1;
std[0].age = 23;
std[0].birthday="1989.12.6";
std[0].address="ABC";
std[0].Other = "好学生";
std[1].name ="李四";
std[1].stdNum = 3;
std[1].age = 24;
std[1].birthday="1989.12.6";
std[1].address="ABdff";
std[1].Other = "优干";
std[2].name = "王五";
std[2].stdNum = 4;
std[2].age = 24;
std[2].birthday="1988.11.24";
std[2].address="ABdfffd";
std[2].Other = "乐于助人";
memset(cc,0,1024);
int i;
for(i = 0; i < 3; i++)
{
if(strcmp(std[i].name,name)==0)
{
// cc = "你所查询的信息为:";
// memset(cc,0,1024); //b 点
printf("%s\n", std[i].name);
snprintf(cc, 1024,"%s\n", std[i].name); //a点
printf("%s\n",cc);
snprintf(cc,1024,"查询结果:姓名:%s.\n",std[i].name);
snprintf(cc,1024,"查询结果:姓名:%s. 学号:%d. 年龄:%d. 生日:%s. 地址:%s. 其它:%s\n",std[i].name,std[i].stdNum,std[i].age,std[i].birthday,std[i].address,std[i].Other);
printf("%s\n",cc);
break;
}
else
{
cc = "查询信息失败";
}
}
return cc;
}
// memset(cc,0,1024); //b 点 这行若不注释,运行时为什么要崩溃?
这句只是赋值操作,应该不是这句导致崩溃的吧!
重点代码贴下,你的太乱了阿!又没说明
#include <stdio.h>
#include <malloc.h>
typedef struct _student
{
char *name;
int stdNum;
int age;
char *birthday;
char *address;
char *Other;
}student,*pStudent;
char *searchStudent(char *name);
char *cc;
int main(int argc, char* argv[])
{
cc = (char *)malloc(1024);
printf("%s\n",searchStudent("张三"));
free(cc);
system("pause");
return 0;
}
char *searchStudent(char *name)
{
student std[3];
std[0].name ="张三";
std[0].stdNum = 1;
std[0].age = 23;
std[0].birthday="1989.12.6";
std[0].address="ABC";
std[0].Other = "好学生";
std[1].name ="李四";
std[1].stdNum = 3;
std[1].age = 24;
std[1].birthday="1989.12.6";
std[1].address="ABdff";
std[1].Other = "优干";
std[2].name = "王五";
std[2].stdNum = 4;
std[2].age = 24;
std[2].birthday="1988.11.24";
std[2].address="ABdfffd";
std[2].Other = "乐于助人";
memset(cc,0,1024);
int i;
for(i = 0;i<3;i++)
{
if(strcmp(std[i].name,name)==0)
{
printf("%s\n",std[i].name);
sprintf(cc,"%s\n",std[i].name); //a点 printf("%s\n",cc);
sprintf(cc,"查询结果:姓名:%s.\n",std[i].name);
sprintf(cc,"查询结果:姓名:%s. 学号:%d. 年龄:%d. 生日:%s. 地址:%s. 其它:%s\n",std[i].name,std[i].stdNum,std[i].age,std[i].birthday,std[i].address,std[i].Other);
printf("%s\n",cc);
break;
}
else
{
cc = "查询信息失败";
}
}
return cc;
}