01/10/2018, 08:20

Hoi ve cach cap them memory cho nhieu element moi trong array

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] != '' && 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
",vStrs[i]);
    
    
    printf("Sag mal wie viele Namen du eingben moechstest
");
    scanf("%d",&namenum);
   // tenmoi=(char*)malloc(namenum * sizeof(tenmoi));
    printf("Die sind:
");
    
    for(i=0;i<=namenum;i++)
    {
        fgets(tenmoi,15,stdin);
    }

    printf("%s
",tenmoi);
    
     //vStrs = (char*) realloc(size *sizeof(char)+namenum);
      vStrs = (char*) realloc(sizeof(char)+namenum); //new memory 
  
    
    /*memcpy(vStrs ,vStrs2,anzahl+namenum);
    printf("%s
",vStrs[i]); */
    

    return 0;
 }
Tao Không Ngu. viết 10:29 ngày 01/10/2018

Hi Duc HUng nguyen.
Bạn cần cấu trúc dữ liệu có thể mở rộng.

Duc HUng nguyen viết 10:27 ngày 01/10/2018

hi ban Phong ky vo
ban co the noi ro hon duoc khong? Minh khong hoc lap trinh bang tieng viet

Tao Không Ngu. viết 10:26 ngày 01/10/2018

Hi Duc HUng nguyen.
Mình không giỏi tiếng anh lắm. @_@!

en.wikipedia.org

Linked list

In computer science, a linked list is a linear collection of data elements, whose order is not given by their physical placement in memory. Instead, each element points to the next. It is a data structure consisting of a collection of nodes which together represent a sequence. In its most basic form, each node contains: data, and a reference (in other words, a link) to the next node in the sequence. This structure allows for efficient insertion or removal of elements from any position in the sequ...

rogp10 viết 10:26 ngày 01/10/2018

minh dang muon them ten mot vai nguoi trong 1 array

Cái này bạn phải dùng cấp phát động với mallocrealloc trong <stdlib.h> chứ không dùng array được

Duc HUng nguyen viết 10:31 ngày 01/10/2018

minh co dung malloc va realloc do thoi, ban check code gium minh vs xem minh sai cho nao?

rogp10 viết 10:28 ngày 01/10/2018

vstrs = (char*) malloc(sizeof(char));

Câu này làm mất hết dữ liệu rồi bạn.

Biến của bạn nó có kiểu là char*[][15] ?

Duc HUng nguyen viết 10:32 ngày 01/10/2018

dung roi ban, nhung cau do sai o cho nao?

Duc HUng nguyen viết 10:27 ngày 01/10/2018

up cho ai hao tam giup minh cai ;(

rogp10 viết 10:29 ngày 01/10/2018

vstrs là 1 mảng nên gán nó bằng bất cứ con trỏ nào (như malloc chẳng hạn) sẽ bị lỗi biên dịch.

Theo mình thì nên dùng char** vì char* là một chuỗi thì char** là mảng các chuỗi rồi.

(muh vstrs kiểu (char*)[][15] về nội dung là 3D nhưng nó vẫn là mảng hai chiều)

Duc HUng nguyen viết 10:26 ngày 01/10/2018

minh dang sua thanh char** nhung compile toan loi :((. Ban co the chi ra cho minh sai o dau khong? sua nhu thanh nhu the nao? Minh se vo cung biet on

Duc HUng nguyen viết 10:37 ngày 01/10/2018

up len ti cho cac bac thong nao

Bài liên quan
0