我有一个结构记录数组和一个用于insert or update记录的函数insert or update。
insert 函数采用 list**(an数组的记录)、**name (图书名)、**author**, year**,**copies 和大小 n 的E 232 list。
如果它找到的记录不是就会插入一个新的,它就会更新记录。在这里n=7
void insert(struct books *list,char name[],char author[],int year,int copies,int n)
{
int i,found=0,empty;
for(i=0;(i<n) && (found==0);i++)
{
// update works fine
if( strcmp(name,list[i].name)==0 && strcmp(author,list[i].author)==0 )
{
list[i].copies=copies;
list[i].year=year;
printf("\n\n####################################################\n");
printf("####\tRecord was successfully updated!\t####\n");
printf("####################################################\n");
found=1;
}
//get an empty record
if(strcmp(list[i].author,"i")==0){empty=i;}
}
//insert gives segmentation error
if(found==0)
{
strcpy(list[empty].name,name);
strcpy(list[empty].author,author);
list[empty].year=year;
list[empty].copies=copies;
printf("\n\n####################################################\n");
printf("####\tRecord was successfully inserted!\t####\n");
printf("####################################################\n");
}
} 我的list数组是:
A
Ruby On Rails
2004
100
B
Inferno
1993
453
C
Harry Potter and the soccers stones
2012
150
D
Harry Potter and the soccers stone
2012
150
E
Learn Python Easy Way
1967
100
F
Ruby On Rails
2004
130
i
i
0
0 为什么它要给Segmentation error: 11
发布于 2013-10-26 20:40:13
可能您需要初始化empty。做
empty=0;
实际上,并不是一个调试服务。所以别问这样的问题了。
https://stackoverflow.com/questions/19611558
复制相似问题