| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 749 人关注过本帖
标题:内存错误,这是怎么回事啊?求解。。。
只看楼主 加入收藏
木偶然
Rank: 2
等 级:论坛游民
帖 子:29
专家分:22
注 册:2011-6-12
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:14 
内存错误,这是怎么回事啊?求解。。。
这个程序作用是通过学号删除一个学生的信息,可以运行,但输入了要删除的学生年龄时出现了内存错误,是怎么回事啊?小妹新来的,听说这个论坛高手多。第一次发帖分不多,还请见谅!先谢过啦。。。
#include<stdio.h>
struct student
{
int num;
char name[10];
int age;
struct student *next;
}stu[2];
void del(struct student*head)
{
int n;
struct student*p=head;
printf("请输入年龄:");
scanf("%d",&n);
while(p)
{
  if(p->next->age==n)
  {
   p->next=p->next->next;
   break;
  }
  else
   p=p->next;
}
}
void main()
{
int i;
printf("请输入学生信息:\n");
for(i=0;i<2;i++)
  scanf("%d%s%d",&stu[i].num,stu[i].name,&stu[i].age);
del(stu);
}
搜索更多相关主题的帖子: 小妹 
2011-06-12 14:36
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
!!

[ 本帖最后由 我菜119 于 2011-6-12 15:25 编辑 ]

愿用余生致力编程
2011-06-12 15:24
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
程序代码:
#include<stdio.h>
#include <malloc.h>
#include <string.h>
struct student
{
int num;
char name[10];
int age;
struct student *next;
};

void del(struct student*head)
{
int n;
struct student*p=head;
printf("请输入年龄:");
scanf("%d",&n);
while(p)
{
  if(p->next->age==n)
  {
   p->next=p->next->next;
   break;
  }
  else
   p=p->next;
}
}
void main()
{
int i;
printf("请输入学生信息:\n");
struct student *head = (struct student *)malloc(sizeof(struct student));
memset(head,0,sizeof(struct student));
struct student *p = NULL;
for(i=0;i<3;i++)
{
    p = (struct student *)malloc(sizeof(struct student));
    memset(p,0,sizeof(struct student));
  scanf("%d %s %d",&p->num,p->name,&p->age);
  p->next = head->next;
  head->next = p;
}
del(head);
p = head;
while(p)
{
  printf("%d %s %d\n",p->num,p->name,p->age);
  p = p->next;
}
} 


图片附件: 游客没有浏览图片的权限,请 登录注册


不是内存错误  是你的逻辑错了  顺序存储结构用链式删除  不出错才怪

                                         
===========深入<----------------->浅出============
2011-06-12 15:43
finalken
Rank: 2
等 级:论坛游民
威 望:1
帖 子:30
专家分:94
注 册:2007-10-2
收藏
得分:0 
while(p->next)
{
  if(p->next->age==n)
  {
   p->next=p->next->next;
   break;
  }
  else
   p=p->next;
}
2011-06-12 15:45
finalken
Rank: 2
等 级:论坛游民
威 望:1
帖 子:30
专家分:94
注 册:2007-10-2
收藏
得分:0 
没有next
2011-06-12 15:46
bccn_2012
Rank: 6Rank: 6
等 级:侠之大者
帖 子:158
专家分:447
注 册:2011-5-14
收藏
得分:0 
回复 3楼 laoyang103
有美女老杨就特别热情。。
2011-06-12 16:34
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 6楼 bccn_2012
那是老杨到现在还没有女朋友呢

                                         
===========深入<----------------->浅出============
2011-06-12 17:00
qianyou
Rank: 3Rank: 3
来 自:江西南昌
等 级:论坛游侠
帖 子:76
专家分:189
注 册:2011-3-25
收藏
得分:0 
https://bbs.bccn.net/thread-341714-1-1.html这是一个学生管理系统,多去想想就是了...
2011-06-12 17:17
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 楼主 木偶然
这位同学,显然我不知道你的到底是链表的还是结构体数组的,你做的完全错误,希望你看看书,明白结构体数组和建立链表之间的区别。还有动态分配!

菜鸟一名,准备起飞
2011-06-12 17:27
木偶然
Rank: 2
等 级:论坛游民
帖 子:29
专家分:22
注 册:2011-6-12
收藏
得分:0 
回复 3楼 laoyang103
先谢过!动态分配内存建立链表我不太会...memset是什么?从没见过啊,能不能写的尽量简单,一目了然的那种,我逻辑思维不行...
2011-06-12 17:40
快速回复:内存错误,这是怎么回事啊?求解。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015964 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved