我创建了以下结构:
typedef struct {
char name[15];
int ID;
} Employee;
typedef Employee Item;
typedef struct {
Item items[5];
int size;
} List;
我从使用此函数填充这些字段的文件中获取值:
void Insert (Item I, int position, List *L){
int i, LastPos;
LastPos = Length(L)-1;
if((LastPos) >= position){
for(i = 0; i < (LastPos - position); i++){
L->items[i-(LastPos+1)] = L->items[LastPos-i];
}
}
L->items[position] = I;
L->size = L->size+1;
}
当位置变量不同时(IE,尚未放置的变量),则没有问题,我可以打印出保存的值 EG:
在位置 0 处插入名称 Stacy ID 1928502
在位置 1 插入姓名 Jimmy ID 1290589
当我为他们的姓名和 ID 号调用打印功能时,它们被打印出来了。
但是,如果我在位置 0 插入 Jimmy,他的信息会打印得很好但是,每次 EG:ID 变为 32767 时,Stacy's 都会显示为随机内存位置。为什么当我覆盖已经采取的位置时会发生这种情况甚至虽然我有一个循环,它应该重新分配被覆盖信息的位置(列表中的一个空格)。