求问 如C语言中 何在一个二维的字符串数组中查找符合的字符

printf("Please enter the name of the book:");
scanf("%s",str);
for(i=0;i<100;i++)
{ if(strstr(bookname[i],str)!=NULL);
printf("\n%d | %s | %s | %s | %s | %s\n",i+1, bookname[i], bookwriter[i], bookpress[i], booktime[i], bookprice[i]);
}
printf("\n\nSearch completed\n");
break;
}
每次都会崩
求解

这种崩溃多半是数组访问越界。如果你的bookname没有100个成员,那么只要访问bookname[i]就会发生越界

for(i=0;i<100;i++)
改成
for(i=0;i<bookname.Length;i++)
试试

.Length我不记得是不是C里面支持的数组函数了,你自己查查,总之就是不要超过数组长度
不行的话,你就先定义一个数组长度变量,用它来定义数组和执行循环,就不会出错了
int max_length;
for(i=0;i<max_length;i++)
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-25
for(i=0;i<100;i++)
{ if(strstr(bookname[i],str)!=NULL);
printf("\n%d | %s | %s | %s | %s | %s\n",i+1, bookname[i], bookwriter[i], bookpress[i], booktime[i], bookprice[i]);
}
已经是一个循环了
break;
}
这个是什么,程序不完整
if(strstr(bookname[i],str)!=NULL); 这句判断没意义 把;去掉
第2个回答  2012-12-25
没看到二维数组在哪
相似回答