| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 625 人关注过本帖
标题:[求助]内存报错,代码不知道哪有错
只看楼主 加入收藏
wwuhhao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-22
收藏
 问题点数:0 回复次数:6 
[求助]内存报错,代码不知道哪有错

主函数不管它,就前面的有错,内存出现报错Can not be read,虽然不影响程序运行,但有错就是有错,拜托各位高手帮我看看:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Max_length 5
typedef struct {
int xh; /*学号*/
char name[10]; /*姓名*/
int c1 , c2 , c3; /*3门课程成绩*/
} Element;


/*在第i个记录的后面插入一个学生的记录算法*/
int Insert_list (int i, Element s[],int *n_pointer){
/*n_pointer存放已输入的最大记录数*/
int j,n;
n=*n_pointer;
if((n==Max_length)||(i<1)||(i>n+1)) return(0);
for (j=n;j>=i;j--) s[j+1]=s[j]; /*移动*/
printf("Input Data for inserting(XH Name C1 C2 C3)\n");
scanf("%d%s%d%d%d",&s[i].xh,s[i].name,&s[i].c1,&s[i].c2,&s[i].c3);
n++;*n_pointer=n;
}


/*删除第i个学生的记录算法*/
int Delete_list (int i,Element s[],int *n_pointer){
int j,n;
n=*n_pointer;
if ((i<1)||(i>n)) return (0);
for (j=i+1;j<=n;j++) { /*移动*/
s[j-1].xh=s[j].xh; strcpy(s[j-1].name,s[j].name);
s[j-1].c1=s[j].c1; s[j-1].c2=s[j].c2; s[j-1].c3=s[j].c3;
}
n--; *n_pointer=n;
}

int Change_list (int i, Element s[] ) {
if ((i<1)|| (i>Max_length +1))return (0);
printf("Input data for updating:\n");
scanf("%d%s%d%d%d",s[i].xh,s[i].name,s[i].c1,s[i].c2,s[i].c3);
return (1);
}


/*查找学号为x算法*/
int Locate_list (Element s[], int n, int x) {
int i;
for (i=1; i<=n; i++) if (s[i].xh==x) return (i);
return (0);
}

/*打印已建立的数据记录,n是记录总数*/
void Print_list(Element s[],int n) {
int i;
if(n>Max_length) return;
printf("XH Name C1 C2 C3 \n");
printf("-----------------\n");
for (i=1;i<=n;i++)
printf("%4d%10s%7d%7d%7d\n",s[i].xh,s[i].name,s[i].c1,s[i].c2,s[i].c3);
}

void main() {
Element s[Max_length];
int i,records=0;
for(i=1;i<=Max_length;i++)Insert_list(i,s,&records);/* 创建线形表*/
Print_list(s,records);
……
}

搜索更多相关主题的帖子: 内存 代码 
2007-05-22 20:25
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 

数组越界访问

2007-05-22 20:29
wwuhhao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-22
收藏
得分:0 
能说详细点吗?
2007-05-22 21:07
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
Element s[Max_length];
int i,records=0;
for(i=1;i<=Max_length;i++)Insert_list(i,s,&records);/* 创建线形表*/
看这三行,明显越界了嘛
2007-05-22 21:15
wwuhhao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-22
收藏
得分:0 
不大懂 那应该怎么改呢,高手?
2007-05-22 21:19
wwuhhao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-22
收藏
得分:0 
高手啊,怎么改啊,帮帮小弟吧,不懂啊!
2007-05-22 22:10
wwuhhao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-5-22
收藏
得分:0 
Element s[Max_length+1]
这一行改了就行
我调出来了 哈哈
总的结构体只定义了5个
又要用5个
他的i是从1开始的
但是C语言数组下标是从0开始的
2007-05-22 22:39
快速回复:[求助]内存报错,代码不知道哪有错
数据加载中...
 
   



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

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