烫烫烫的问题

hibari2tsuna6688 2009-12-13 12:41:30
定义了这样的结构体
struct date
{
int year;
int month;
int day;
};
struct Student
{
char name[20];
char subject[Subject][100];
struct date timeofenter [Subject];
char contents[Subject][1000];
};
主函数中引用了
struct Student stu[50];
定义了个指针ptr
输入想找的名字之后
for(countstudent=0;countstudent <studentnum;countstudent++)
{
ptr=strcmp(searchname,stu[countstudent].name);
if(ptr==0)
{
printf("Got it!");
printf("\n");
for(i=0;i <subjectnum;i++)
{
puts(stu[countstudent].subject[i]);
printf("\n");
printf("%d\t",stu[countstudent].timeofenter[i].year);
printf("%d\t",stu[countstudent].timeofenter[i].month);
printf("%d",stu[countstudent].timeofenter[i].day);
printf("\n");
…………
为什么等显示出来以后该是subject的地方都是烫烫烫烫烫?
...全文
286 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
kijl000 2010-08-12
  • 打赏
  • 举报
回复
添加变量,赋值吧,这样看一会就迷糊了
hibari2tsuna6688 2009-12-15
  • 打赏
  • 举报
回复
ok啦……谢谢同志们~
hibari2tsuna6688 2009-12-14
  • 打赏
  • 举报
回复
额……谢谢,但是之后的
printf("please enter the subject(reprint):");
gets(searchsubject);
for(countsubject=0;countsubject <subjectnum;countsubject++)
{


if(strcmp(searchsubject,stu[countstudent].subject[countsubject])==0)
{
printf("You would like to visit:");
puts(stu[countstudent].subject[countsubject]);
printf("\n");
puts(stu[countstudent].contents[countsubject]);
}
}
打印不出来?是因为if(strcmp(searchsubject,stu[countstudent].subject[countsubject])==0)的原因吗?
sunnyheyun 2009-12-14
  • 打赏
  • 举报
回复
memset(stu,0,sizeof(struct Student)*50);//内存初始化为0
hibari2tsuna6688 2009-12-13
  • 打赏
  • 举报
回复
就是改成if(strcmp(searchname,stu[countstudent].name)==0);也还是乱码
javadream11 2009-12-13
  • 打赏
  • 举报
回复
ptr=strcmp(searchname,stu[countstudent].name);
这个。。。。
jernymy 2009-12-13
  • 打赏
  • 举报
回复
楼主

for(count=0;count <j;count++)
{
printf("第%d个学生的主题%d:",i+1,count+1);
scanf("%s",&stu[i].subject[count]); // 这里要输入的是字符串了
fflush(stdin);
printf("第%d的主题的年份:",count+1);
scanf("%d",&stu[i].timeofenter[count].year);
getchar();
printf("第%d的主题的月份:",count+1);
scanf("%d",&stu[i].timeofenter[count].month);
getchar();
printf("第%d的主题的日期:",count+1);
scanf("%d",&stu[i].timeofenter[count].day);
getchar();
printf("第%d个学生的主题内容%d:",count+1,count+1);
scanf("%s",&stu[i].contents[count][1000]); // 这里要输入的是字符串了
fflush(stdin);
}
hbvanguard 2009-12-13
  • 打赏
  • 举报
回复

//以下subject能正确赋值
for(count=0;count <j;count++)
{
printf("第%d个学生的主题%d:",i+1,count+1);
getchar();//
gets(stu[i].subject[count]);//这里用gets因为是char数组
fflush(stdin);
printf("第%d的主题的年份:",count+1);
scanf("%d",&stu[i].timeofenter[count].year);
fflush(stdin);
printf("第%d的主题的月份:",count+1);
scanf("%d",&stu[i].timeofenter[count].month);
fflush(stdin);
printf("第%d的主题的日期:",count+1);
scanf("%d",&stu[i].timeofenter[count].day);
fflush(stdin);
printf("第%d个学生的主题内容%d:",count+1,count+1);
gets(stu[i].contents[count]);//同样道理
fflush(stdin);
}
hibari2tsuna6688 2009-12-13
  • 打赏
  • 举报
回复
干脆剩下的一块吧……
printf("please enter the subject(reprint):");
gets(searchsubject);
for(countsubject=0;countsubject <subjectnum;countsubject++)
{

ctr=strcmp(searchsubject,stu[countstudent].subject[countsubject]);
if(ctr==0)
{
printf("You would like to visit:");
printf("%s",stu[countstudent].subject[countsubject]);
printf("\n");
printf("%s",stu[countstudent].contents[countsubject]);
}
}
}

void inputInfo(struct Student *stu,int n,int m)//n表示学生数,m表示主题数//
{
int i = 0,count,j;
for(i = 0; i < n; i++)
{
printf("第%d个学生的姓名:",i+1);
getchar();
gets(stu[i].name);

printf("Enter the subject number of the %d student:",i+1);
scanf("%d",&j);

if(j<=m)
{
for(count=0;count <j;count++)
{
printf("第%d个学生的主题%d:",i+1,count+1);
scanf("%d",stu[i].subject[count]);
fflush(stdin);
printf("第%d的主题的年份:",count+1);
scanf("%d",&stu[i].timeofenter[count].year);
getchar();
printf("第%d的主题的月份:",count+1);
scanf("%d",&stu[i].timeofenter[count].month);
getchar();
printf("第%d的主题的日期:",count+1);
scanf("%d",&stu[i].timeofenter[count].day);
getchar();
printf("第%d个学生的主题内容%d:",count+1,count+1);
scanf("%d",stu[i].contents[count][1000]);
fflush(stdin);
}
printf("\n");
}
}
}


void Sort(struct Student *stu,int n)
{
int i,j;
struct Student temp;
for(i=0;i <n-1;i++)
{
for(j=i+1;j <n;j++)
{
if(strcmp(stu[i].name,stu[j].name) <0)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}

}

谢啦……
bobommsky 2009-12-13
  • 打赏
  • 举报
回复
哈哈,烫烫。。。楼主很可爱!
hbvanguard 2009-12-13
  • 打赏
  • 举报
回复
subject的内容显示不出来很可能是因为你的stu[50]里的成员name,subject[Subject][100],timeofenter[Subject],contents[Subject][1000]没有赋值,inputInfo(stu,studentnum,subjectnum)函数体发上来看看
hibari2tsuna6688 2009-12-13
  • 打赏
  • 举报
回复
不然我把前面的程序粘上来吧
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define Subject 5
#define Number 10

struct date
{
int year;
int month;
int day;
};
struct Student
{
char name[20];
char subject[Subject][100];
struct date timeofenter [Subject];
char contents[Subject][1000];
};

void inputInfo(struct Student *stu,int n,int m);
void Sort(struct Student *stu,int n);

void main()
{
int studentnum,subjectnum;
char searchname[20]={'\0'};
int countstudent,countsubject,i;
char searchsubject[100]={'\0'};
int ctr;


struct Student stu[50];
memset(stu,0,sizeof(struct Student)*50);

printf("Please enter the number of the students:");
scanf("%d",&studentnum);


printf("Please enter the total subject number:");
scanf("%d",&subjectnum);

inputInfo(stu,studentnum,subjectnum);
Sort(stu,studentnum);

printf("Please enter the name you are searching:");

gets(searchname);

printf("You have printed:");

puts(searchname);

printf("\n");
for(countstudent=0;countstudent <studentnum;countstudent++)
{

puts(stu[countstudent].name);


if(strcmp(searchname,stu[countstudent].name)==0)
{
printf("Got it!");
printf("\n");
for(i=0;i <subjectnum;i++)
{
puts(stu[countstudent].subject[i]);
printf("\n");
printf("%d\t",stu[countstudent].timeofenter[i].year);
printf("%d\t",stu[countstudent].timeofenter[i].month);
printf("%d",stu[countstudent].timeofenter[i].day);
printf("\n");
}
}
}
………………
hibari2tsuna6688 2009-12-13
  • 打赏
  • 举报
回复
我是在下面给的用户输入给结构体赋值的……

你的stu成员都没有赋值,怎么能查找出来呢
struct Student stu[50];
memset(stu,0,sizeof(struct Student)*50);//这句干掉烫烫烫

谢谢啊,但是虽然干掉了烫,但是subject的内容显示不出来诶……
xiaoshun123 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 beginnow 的回复:]
烫是0xcc是你使用没有初始化的栈内存造成的
[/Quote]

恩,也就是溢出啦。。。
z569362161 2009-12-13
  • 打赏
  • 举报
回复
够你给结构定义的了
sduxiaoxiang 2009-12-13
  • 打赏
  • 举报
回复
这个明显正常啊
没初始化
hbvanguard 2009-12-13
  • 打赏
  • 举报
回复
你的stu成员都没有赋值,怎么能查找出来呢
struct Student stu[50];
memset(stu,0,sizeof(struct Student)*50);//这句干掉烫烫烫
hibari2tsuna6688 2009-12-13
  • 打赏
  • 举报
回复
能麻烦告诉我下怎么初始化吗谢谢
beginnow 2009-12-13
  • 打赏
  • 举报
回复
烫是0xcc是你使用没有初始化的栈内存造成的
selooloo 2009-12-13
  • 打赏
  • 举报
回复
初始化没?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧