我想存储一个字符串数组,计算它们的长度,并使用下面提到的算法按长度递增顺序(最小->较大)重新排列它们//
交换持有一个较大的字符串来替换订单(当找到另一个分钟时)
我可以使用realloc(),但我尚未考虑防御编程
#include <stdio.h>
#include <stdlib.h>
main()
{
int i,j,N;
printf("\n Input amount of alphanumericals: ");
scanf("%d",&N);
{
int min;
char *swap=(char*)malloc(sizeof(char)*150);
char *A[N],**temp;
temp=A;
for(i=1;i<=N;i++){
printf("\nInput %d element:",i);
gets(temp+i);
}
free(temp);
printf("\n\nData [");
for(i=0;i<N;i++)
printf(" %s",A[i]);
printf(" ]\n\n");
//Ins sort
for(i=0;i<N;i++){
min=i;//Assume current is min
for(j=i+1;j<N;j++){
//Compare assuming min with current
if(strcmp(A[j],A[min])<0){
min=j;
}
//If next is min replace in current position
if(min!=i){
swap=A[i];
A[i]=A[min];
A[min]=swap;
}
}
free(swap);
printf("\nAfter insertion point algorithm\n");
printf("\n\nInsertion Sorted Data [");
for(i=0;i<N;i++)
printf(" %s",A[i]);
printf(" ]");
}
return 0;
}
最佳答案
您尚未为A
及其元素分配内存。
首先为A
分配内存,然后为A
的元素分配内存。然后分配temp = A[i]
。
应该是这样的:
A = malloc(N);
for(int i = 0; i < N; i++)
A[i] = malloc(150);
关于c - char指针的伪变量数组(字符串数组)在输入后崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21166308/