如果是的话,明显是有问题的。
你定义了char *str1[8]等变量,并对他进行了赋值,
可是你并没有给str1申请空间,可是又对他进行了写操作,会出现段错误的(你写了内存中你本不应该写的位置),当然,你的编译器如果足够好的话,运行的时候应该会给出警告的,或错误提示消息的。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char str1[10][8],str2[10][8],str3[10][8]; //原来未分配空间,所以出错!!!
int SeqSearch(char p[][8],char *k)
{
int i;
p=str1;
for(i=0;i<7;i++)
if(!strcmp(*(p+i),k))
return (i);
return(-1);
}
int main()
{
char ch[9];
int i,count,nums,k;
printf("how many student your input?\n");
scanf("%d",&nums);
for(i=0;i<nums;i++)
{
count=i+1;
system("cls");
printf(">>1.input your student %d number;\n",count);
scanf("%s",str1[i]);
printf(">>2.input your student %d name;\n",count);
scanf("%s",str2[i]);
printf(">>3.input your student %d score;\n",count);
scanf("%s",str3[i]);
}
printf("input over!\n");
printf("input your search number:\n");
scanf("%s",ch);
k=SeqSearch(str1,ch);
if(k+1)
{
printf("\t number \t name \t score\n");
printf("\t%s\t%s\t%s\n",str1[k],str2[k],str3[k]);
}
else
printf("NOT FIND!\n");
getchar();
getchar();
return 0;
}