A je tohle správně:
char **pointer;
*pointer=array;
reallocArray(pointer,&arraySize);
array=*pointer;
nebo to má vypadat takhle:
char **pointer;
char *pointer2;
*pointer=pointer2;
reallocArray(pointer,&arraySize);
array=*pointer;
A je tohle správně:
char **pointer;
*pointer=array;
reallocArray(pointer,&arraySize);
array=*pointer;
nebo to má vypadat takhle:
char **pointer;
char *pointer2;
*pointer=pointer2;
reallocArray(pointer,&arraySize);
array=*pointer;
#15 hlucheucho
ještě, jestli můžu otravovat, tak verze s parametrem bude vypadat takhle, že?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reallocArray( char **pointer,unsigned int *arraySize)
{
*arraySize+=200;
char *newArray=(char *)malloc((*arraySize+1)*sizeof(char));
strcpy(newArray,*pointer);
*pointer=newArray;
}
int main()
{
unsigned int arraySize=10;
char *array=(char *)malloc((arraySize+1)*sizeof(char));
char **pointer;
*pointer=array;
reallocArray(pointer,&arraySize);
array=*pointer;
array[10]='0';
return 0;
}
#13 KIIV
Super, už to nejspíš chápu a tohle je konečně funkční... :D Díky moc všem za rady
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* reallocArray(char *x,unsigned int *arraySize)
{
*arraySize+=200;
char *newArray=(char *)malloc((*arraySize+1)*sizeof(char));
strcpy(newArray,x);
free(x);
return newArray;
}
int main()
{
unsigned int arraySize=1;
char *array=(char *)malloc((arraySize+1)*sizeof(char));
array=reallocArray(array,&arraySize);
array[10]='0';
return 0;
}
#9 KIIV
A jo, máš pravdu..
0xd21010 adresa x před zavoláním funkce..
0xd21030 adresa nového pole
0xd21030 adresa x při přeřazení
0xd21010 adresa x po skončení funkce
Takže, abych změnil adresu pole, musí funkce vracet pointer na nově vytvořené pole, že?
#7 KIIV
pardon, poslal jsem špatný kód.. Už si s tím hraji tak dlouho, že ani nevnímám :D
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Realloc(char *x,unsigned int *arraySize)
{
*arraySize+=200;
char *newArray=(char *)malloc((*arraySize+1)*sizeof(char));
strcpy(newArray,x);
char * temp=x;
x=newArray;
newArray=temp;
free(newArray);
}
int main()
{
unsigned int arraySize=1;
char *array=(char *)malloc(arraySize*sizeof(char));
Realloc(array,&arraySize);
array[10]='0';
return 0;
}
Tohle by snad mělo být správně...
#5 KIIV
jasné, už jsem to upravil..
void Realloc(char *x,unsigned int *newArraySize)
{
*newArraySize+=200;
char *newArray=(char *)malloc(*newArraySize+1)*ziseof(char));
strcpy(newArray,x);
int temp=x;
x=newArray;
newArray=temp;
free(newArray);
}
Ještě mi trochu dělají problém ukazatele a zapomněl jsem, že k přepointerování nesmím dát hvězdu.. Jinak díky za odpovědi
Dobrý den, vytvořil jsem si v C funkci pro realokaci pole:
void reallocArray(char *x,unsigned int *arraySize)
{
unsigned int oldArraySize=*arraySize;
*arraySize+=200;
char *newArray=(char *)malloc(((*arraySize)+1)*sizeof(char));
for (i=0;i<=oldArraySize;++i)
{
newArray[i]=x[i];
}
int temp=*newArray;
*x=*newArray;
*newArray=temp;
free(newArray);
}
Ale nějak mi s ní program nefunguje. Nevíte, kde by mohla být chyba? Díky za odpovědi
Dobrý den, chtěl jsem se zeptat, z jakého důvodu se, když mám následující kód
char a;
int b;
a=getwchar();
cin >> b;
cin >> b;
cin >> b;
provede čtení z vstupu pouze pomocí getwchar() a následující cin jsou přeskočeny? Děkuji za odpovědi