Como retornar uma matriz da função para o programa principal? [RESOLVIDO]

1. Como retornar uma matriz da função para o programa principal? [RESOLVIDO]

Eduardo
gedarius

(usa Ubuntu)

Enviado em 05/10/2009 - 15:42h

Olá pessoal, como posso retornar uma matriz que está na função para o programa principal? eu sei que é com ponteiro, mas o problema é que não sei tratar isso...

tipo, quero criar uma função que retorne o ponteiro de uma matriz... até ai blz, porém quando eu já tiver com o endereço no programa principal, tem como eu tratar os dados por indices??

tipo:

matPrincipal[] = FunçãoRetornaPonteiroChar();(algo assim)

neste caso eu poderia fazer: matPrincipal[2][0], por exemplo?

por que nessa matriz estarão "strings" e eu quero trata-las no prog principal... alguém pode me ajudar?

Obrigado.

----------------------------------------
para complementar:

O que eu preciso é retornar um ponteiro da função para o programa principal... tipo, a matriz está na função e eu preciso tratar ela no prog principal. ex:

#include<stdio.h>

char *exemplo()
{
char matriz[3][10];

matriz[0][] = "string qualquer";
matriz[1][] = "string qualquer";
matriz[2][] = "string qualquer";
matriz[3][] = "string qualquer";

return(*matriz);
}

int main(void)
{
char **mat;
*mat = exemplo();

while(*mat)
printf("%s\n", *mat++);
getch();
}

fiz isso mas, desse jeito não está dando certo =/... alguma luz???

mesmo assim Vlw


  


2. Re: Como retornar uma matriz da função para o programa principal? [RESOLVIDO]

yurick gomes
yurick

(usa Debian)

Enviado em 05/10/2009 - 20:19h

cara trabalhar com alocação dinâmica é muito mais fácil e flexível (pelo menos na minha opinião!)
quando comecei a programar também tive esse mesmo problema que vc tá tendo!
então eu fiz um código pra vc dá uma olhada, eu uso alocação dinâmica,
dá certo e sem nenhum warning :D flws,
dá uma olhada nisso:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char **exemplo()
{
int temp;
char **matriz = (char**)malloc(4*sizeof(char));

for (temp = 0; temp < 4; temp++ )
*(matriz + temp) = (char*)malloc(40*sizeof(char));

*(matriz+0) = strcpy(*(matriz+0), "alguma string");
*(matriz+1) = strcpy(*(matriz+1), "alguma string");
*(matriz+2) = strcpy(*(matriz+2), "alguma string");
*(matriz+3) = strcpy(*(matriz+2), "alguma string");

return matriz;
}

int main(void)
{
int temp;

char **mat = exemplo();

for (temp = 0; temp < 4; temp++)
printf("string %d = %s\n", temp, *(mat + temp));

return 0;
}



3. Re: Como retornar uma matriz da função para o programa principal? [RESOLVIDO]

Eduardo
gedarius

(usa Ubuntu)

Enviado em 06/10/2009 - 10:34h

Yurick, Valeu mesmo cara, era exatamente isso que eu estava procurando... eu tinha esquecido completamente a possibilidade da alocação dinamica hehe... muuito obrigado mesmo cara!!!!!

abraços!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts