xin chao moi nguoi,
Thanh that xin loi vi minh dang o thu vien nen khong co unikey, minh dang muon them ten mot vai nguoi trong 1 array, sau do array se sap xep ten cu va ten moi thanh 1 list alphabet, van de minh gap phai la realloc va malloc, day la doan code minh viet,ban nao xem gium minh xem cho nao sai?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *vstrs[][15]={"Max","Moritz", "Bolte", "Hans Huckebein", "Helene", "Antonius", "Boeck", "Maecke", "Lempel", "Schlich"};
int anzahl=sizeof(vstrs)/sizeof(vstrs[0]) ; // wenn char wäre,würde es nur von den buchstaben gezählt
// anzahl größe byte,länge des array
int i;
int k;
int j;
char tmp;
int namenum,z;
char tenmoi[15];
vstrs = (char*) malloc(sizeof(char));
for(i=0;i<anzahl-1;i++) //cai nay tinh element cua array
{
for(j=i+1;j<anzahl;j++)
{
for(k=0; vStrs[i][k] != '\0' && vStrs[i][k] == vStrs[j][k];k++); //jedes mal nur eine leer anweisung ausgeführt wird(nichts gemacht wird,außer das K hoch gezählt wird, in diesem Fall ist K=3).
//ob das wahr ist // i und j sind jetzt an den 2 wörten die wir vergleichen wollen.
if(vStrs[i][k]>vStrs[j][k])
{
for(k=0;k<15;k++) // das tauscht buchstabe für buchstabe weil arry nur 15 buchstaben gibt.
{
tmp=vStrs[i][k];
vStrs[i][k]=vStrs[j][k];
vStrs[j][k]=tmp;
}
}
}
}
for(i=0;i<anzahl;i++)
printf("%s\n",vStrs[i]);
printf("Sag mal wie viele Namen du eingben moechstest\n");
scanf("%d",&namenum);
// tenmoi=(char*)malloc(namenum * sizeof(tenmoi));
printf("Die sind:\n");
for(i=0;i<=namenum;i++)
{
fgets(tenmoi,15,stdin);
}
printf("%s\n",tenmoi);
//vStrs = (char*) realloc(size *sizeof(char)+namenum);
vStrs = (char*) realloc(sizeof(char)+namenum); //new memory
/*memcpy(vStrs ,vStrs2,anzahl+namenum);
printf("%s\n",vStrs[i]); */
return 0;
}