devuelve valores múltiples de una función en C [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Puntero perdiendo su valor + execv aviso de compilación 1 respuestami problema original es que quiero escribir una función que me pueda devolver dos valores. Sé que puedo hacerlo pasando la dirección de los dos argumentos a la función y directamente calculo sus valores dentro de esa función. Pero al hacer un experimento, sucede algo extraño. El valor que obtuve dentro de la función no puede sobrevivir a la función principal:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void build(char *ch){
ch = malloc(30*sizeof(char));
strcpy(ch, "I am a good guy");
}
void main(){
char *cm;
build(cm);
printf("%s\n", cm);
}
El programa anterior simplemente imprime algo de basura. Así que quiero saber qué está mal aquí. Eventualmente, quiero algo como estoparse(char **argv, char **cmd1, char **cmd2)
, que puede analizar dos comandos para mí desde el comando original argv. Eso sería genial si alguien puede explicar un poco. Muchas gracias.