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;
}
Bài liên quan
Hi Duc HUng nguyen.
Bạn cần cấu trúc dữ liệu có thể mở rộng.
hi ban Phong ky vo
ban co the noi ro hon duoc khong? Minh khong hoc lap trinh bang tieng viet
Hi Duc HUng nguyen.
en.wikipedia.org
Mình không giỏi tiếng anh lắm. @_@!
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...
Cái này bạn phải dùng cấp phát động với
malloc
vàrealloc
trong<stdlib.h>
chứ không dùng array đượcminh co dung malloc va realloc do thoi, ban check code gium minh vs xem minh sai cho nao?
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]
?dung roi ban, nhung cau do sai o cho nao?
up cho ai hao tam giup minh cai ;(
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)
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
up len ti cho cac bac thong nao