C语言疑问,中间的Strcpy为什么导致程序崩溃7
发布网友
发布时间:2024-02-20 01:36
我来回答
共2个回答
热心网友
时间:2024-07-19 14:49
char *MyArray[]={"A1","C3","B2"}; 这里的数据均存放在系统只读存取区域,而你函数中的strcpy要去改变其中的内容,因此,导致程序崩溃!
if(strcmp(a[i],a[i+1])>0)
{
strcpy(temp,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],temp);
}
改成
if(strcmp(a[i],a[i+1])>0)
{
temp=a[i] ;
a[i]=a[i+1];
a[i+1]=temp;
}
热心网友
时间:2024-07-19 14:49
/*
A1 B2 C3
Press any key to continue
*/
#include <stdio.h>
#include <string.h>
void AlphaSort( char a[][10],int size) {
char temp[10]; // 需要分配空间,否则如何填入内容呢?
int i,j,k;
for(i = 0; i < size - 1; i++) {
k = i;
for(j = i + 1; j < size; j++) {
if(strcmp(a[k],a[j]) > 0) k = j;
}
if(k != i) {
strcpy(temp,a[k]);
strcpy(a[k],a[i]);
strcpy(a[i],temp);
}
}
for(i = 0; i < size; i++) {
printf("%s ",a[i]);
}
printf("\n");
}
int main() {
char MyArray[][10] = {"A1","C3","B2"};
AlphaSort(MyArray,3);
return 0;
}