c语言Acess Violation

为什么执行strcpy(s[i],s[k])会出现Acess Violation图片图片

c

5个回答

这是源代码:
#include
#include
#define N 5

void Sort(char s[10][N]){
char temp[N];
int i,j,k;
for(i=0;i k=i;
for(j=i+1;j if(strcmp(s[k],s[j])>0)
k=j;
}
if(k!=i){
strcpy(temp,s[i]);
strcpy(s[i],s[k]);
strcpy(s[k],temp);
}//if
}//for
}

int main(){
char s[10][N];
int i;
printf("请输入10个长度为%d的字符串\n",N);
for(i=0;i<10;i++)
gets(s[i]);
Sort(s);
for(i=0;i<10;i++)
puts(s[i]);
return 0;
}

底下贴的代码不完整啊,sort函数里两个for循环没写完啊,更新下代码吧

#include
#include
#define N 5

void Sort(char s[10][N]){
char temp[N];
int i,j,k;
for(i=0;i k=i;
for(j=i+1;j if(strcmp(s[k],s[j])>0)
k=j;
}
if(k!=i){
strcpy(temp,s[i]);
strcpy(s[i],s[k]);
strcpy(s[k],temp);
}//if
}//for
}

int main(){
char s[10][N];
int i;
printf("请输入10个长度为%d的字符串\n",N);
for(i=0;i<10;i++)
gets(s[i]);
Sort(s);
for(i=0;i<10;i++)
puts(s[i]);
return 0;
}

粘贴上去就不见了,那两处的for循环是
for(i=0;i k=i;
for(j=i+1;j if(strcmp(s[k],s[j])>0)
k=j;
}
if(k!=i){
strcpy(temp,s[i]);
strcpy(s[i],s[k]);
strcpy(s[k],temp);
}//if
}//for

for(i=0;i {k=i;
for(j=i+1;j if(strcmp(s[k],s[j])>0)
k=j;
if(K!=i){
strcpy(temp,s[i]);
strcpy(s[i],s[k]);
strcpy(s[k],temp);
}
}
就是个选择排序的过程,为什么会执行到strcpy(s[i],s[k])会出现Acess Violation

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐