Я хочу хранить массив строк, подсчитывать их длину и переупорядочивать их с увеличением длины (наименьшим -> большим) с использованием упомянутого ниже алгоритма. //
Swap содержит относительно большую строку для замены порядка (когда другая мин найдена)
я мог бы использовать перераспределить(), но я не рассматриваю Defend программирования ещеМассивы указателей (строк) сбоев после ввода?
#include <stdio.h>
#include <stdlib.h>
int 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=0;i<N;i++){
printf("\nInput %d element:",i+1);
fgets(temp+i,150,STDIN);
}
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;
}
ли он даже скомпилированные для вас (получает (TEMP + I);)?В любом случае вы указываете здесь указатели и используете его без выделения памяти char * A [N], ** temp; Темп = А; –
Кроме того, temp, который является просто ярлыком для выполнения, получает (A + i) или хранит буквенно-цифровые символы во всех ячейках, да blcc довольно эластичен иногда:/ – hitter