Foros del Web » Programación para mayores de 30 ;) » C/C++ »

char* - qué puede fallarme?

Estas en el tema de char* - qué puede fallarme? en el foro de C/C++ en Foros del Web. Hola, Tengo una funcion que cambia el contenido de un char array[2]. En el main la inicializo a wq, pero el printf final debería pintar ...
  #1 (permalink)  
Antiguo 12/11/2012, 08:23
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
char* - qué puede fallarme?

Hola,

Tengo una funcion que cambia el contenido de un char array[2]. En el main la inicializo a wq, pero el printf final debería pintar ab y no wq porque la función se supone que le cambia el contenido.

¿Sabeis que me falla?



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


char name[2] = {'a', 'b'};


void funcion(char* otro)
{
otro = name;
printf("F: %s\n", otro); <- pinta ab
}



int main(void)
{
char array[2];
array[0]='w';
array[1]='q';

funcion(array);

printf("%c%c\n", array[0], array[1]); <- pinta wq

return 0;
}


Un saludo.
  #2 (permalink)  
Antiguo 12/11/2012, 08:59
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 11 años, 5 meses
Puntos: 10
Respuesta: char* - qué puede fallarme?

Hola Zunri , cuando pasas "array" a la función
el parámetro "otro" funciona como puntero para "array"
Pero en esta línea "otro = name;"
cambias a quién está apuntando "otro"
Ahora "otro" apunta a "name"

Para poder asignarle sin apuntarlo, tienes que hacerlo por elemento, de esta forma:

otro[0] = name[0];
otro[1] = name[1];

Espero te sirva. Saludos
  #3 (permalink)  
Antiguo 12/11/2012, 09:10
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: char* - qué puede fallarme?

Podría usar un strcpy mejor?

strcpy(otro, name, sizeof(name))

asi?
  #4 (permalink)  
Antiguo 12/11/2012, 09:35
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 11 años, 5 meses
Puntos: 10
Respuesta: char* - qué puede fallarme?

Exacto, pero no es necesario poner "sizeof(name))"

simplemente

strcpy(otro, name)

La otra forma sería esta, que es con el sizeof

memcpy(otro, name, sizeof(char)*strlen(name));

Etiquetas: char, funcion, int, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:08.