terça-feira, outubro 13, 2009

complicometro.

Problema:
Alocar um array de arrays de chars.

Desde que fiz picc à trinta milenios que sonho com escrever este código.

tudo é simplificado por ter uma funçao que recebe um ponteiro para um array de ponteiros de char , um ponteiro para um chunk de memoria onde estou a escrever o conteudo do array, e um ponteiro para o conteudo.

posto isto sempre que me apetecer escrever qualquer coisa para lá posso simplesmente:
char ** myArray = malloc(sizeof(char**)* MyArrLength);
char *myChunk = malloc(MAX_STRLEN * nElems);

addStringToArray(&myArray, &myChunk, "uma string completamente ao acaso"); addStringToArray(&myArray, &myChunk, "ai que contentamento!!");

printf("%s", *(myArray+1));

vai expor na consola "ai que contentamento!!"


void addStringToArray(char*** arrP, char** chunk, char * source){
char ** i = *arrP;
char * dst = *chunk;
*dst='\0';
mystrcat(dst,source); //copiar para o chunk
*i=dst; //guardar o endereço de inicio desta string
//acertar o i
*arrP=i;
//avançar esse pointer
++(*arrP);
//acertar o p
*chunk = dst + strlen(source)+1;//+1 pk queremos guardar o '\0'
}


Enfim... divirto-me com estas coisas. =)

Sem comentários :