0

Vuelvo con otra consulta de C
Tengo el siguiente enunciado para armar mi funcion

/*
*   Asigna en el tercer parámetro, la concatenación
*   de los primeros dos Strings
*   Ejemplo:
*   char* nombre = "Ritchie";
*   char* saludo;
*   string_concat("Hola ", nombre, &saludo);
*   =>
*   saludo = "Hola Ritchie"
*/
void string_concat_dinamyc(const char*, const char*, char**);

Y esto fue lo que hice:

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

void string_concat_din(char* p1, char* p2,char** lugar){
    char* concatenacion = malloc(sizeof(char)*(strlen(p1)+strlen(p2)+1));
    *concatenacion = 0;
    strcat(concatenacion,p1);
    strcat(concatenacion,p2);
    *lugar = &concatenacion;
    printf("--Dentro de la funcion \n"
            "Lo que tengo guardado donde apunta concatenacion es: %s \n",concatenacion);
    printf("Direccion DONDE SE ENCUENTRA PUNTERO concatenacion: %p \n",&concatenacion);
    printf("Direccion DONDE APUNTA concatenacion: %p \n",concatenacion);
    printf("Direccion DONDE APUNTA concatenacion: %p\n",*concatenacion);
    printf("Direccion A DONDE APUNTO -DESREFERENCIADO UNA VEZ- lugar: %p \n"
            " --Fin de funcion\n",*lugar);
    //printf("La palabra: %s",lugar);
}

int main(void){
    char* nombre = "Ritchie";
    char* saludo = "Hola ";
    char* direccion;
    string_concat_din(nombre,saludo,&direccion);
    printf("%s",direccion);
    return 0;
}

Y lo que imprimo en pantalla es lo siguiente:

  --Dentro de la funcion 
Lo que tengo guardado donde apunta concatenacion es: RitchieHola  
Direccion DONDE SE ENCUENTRA PUNTERO concatenacion: 0xbfcf34e8 
Direccion DONDE APUNTA concatenacion: 0x8cfc008 
Direccion DONDE APUNTA concatenacion: 0x52 
Direccion A DONDE APUNTO -DESREFERENCIADO UNA VEZ- lugar: 0xbfcf34e8 
 --Fin de funcion
5Ͽ

Todavia no estoy del todo familiarizado con los operadores unarios como * y &

Tengo el puntero char** Lugar(Un puntero que apunta a un puntero que contiene un tipo de dato char, hago que apunta) que apunta donde se encuentra mi puntero char* concatenacion deberia de poder hacer el siguiente juego lugar -> concatenacino -> direccion donde esta mi string. De esta forma cuando main invoca la funcion con los 3 parametros: 1ro y 2do se van a concatenar y guardar en un puntero y luego mi 3er parametro es donde debo guardar mi nuevo sring. Pero esto no esta pasando

Otra de las dudas que tengo es con los prints que hago para concatenacion:

printf ("%p",&concatenacion): Es donde se encuentra mi puntero

printf ("%p",*concatenacion): Adonde apunta mi puntero (entiendo que esta deberia ser la direccion donde se encuentra mi string)

printf ("%p",concatenacion): Que es lo que vendria a ser?

IvFlores
  • 83
  • 5
  • 2
    Esa *parrafada* tan grande, aparte de para distraer y meter *ruido* ... ¿ Para que sirve ? Por favor, concreta las preguntas: resultado esperado, resultado obtenido. – Trauma Sep 09 '19 at 03:13
  • Creo que gran parte de tus dudas te las resolvieron la semana pasada en las respuestas a tu pregunta [C: Punteros operadores & y *](https://es.stackoverflow.com/questions/290038/c-punteros-operadores-y) – SuperG280 Sep 09 '19 at 08:05

0 Answers0