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

[SOLUCIONADO] Función que cambia valor de una cadena

Estas en el tema de Función que cambia valor de una cadena en el foro de C/C++ en Foros del Web. Hola a todos, estoy intentando crear una función a la que le envíes la dirección de una variable y te cambie el valor de ésta. ...
  #1 (permalink)  
Antiguo 25/01/2014, 17:28
 
Fecha de Ingreso: enero-2014
Mensajes: 4
Antigüedad: 5 años, 10 meses
Puntos: 0
Exclamación Función que cambia valor de una cadena

Hola a todos,
estoy intentando crear una función a la que le envíes la dirección de una variable y te cambie el valor de ésta. Con enteros me funciona pero con cadenas de caracteres no he podido... Aquí está lo que tengo hecho:
Código:
#include "stdafx.h"
#include "stdlib.h"

void cambiarEntero(int *entero){
	*entero=7;
}

void cambiarCadena(char *cadena[]){
	*cadena="Antonio";
}

int _tmain(int argc, _TCHAR* argv[]){
	int numero=3;
	
	printf("El numero antes es: %d\n", numero);
	
	cambiarEntero(&numero);
	printf("El numero despues es: %d\n", numero);

	
	char nombre[10]="Felipe";

	printf("El nombre antes es: %s\n", nombre);
	
	cambiarCadena(&nombre);
	printf("El nombre despues es: %s\n", nombre);

	system("PAUSE");

	return 0;
}
El problema está al pasar la dirección de la variable, en "cambiarCadena(&nombre);"
No se qué es lo que hago mal, a ver si alguien me puede ayudar...
Gracias!!
  #2 (permalink)  
Antiguo 25/01/2014, 17:38
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 9 años, 4 meses
Puntos: 13
Respuesta: Función que cambia valor de una cadena

Resulta que en C, no puedes asignarle a una variable iniciada un string de esta forma.

Código C:
Ver original
  1. *cadena="Antonio";

Primero porque no es posible, si está iniciada, segundo, porque cuando haces *cadena no estás señalando al string completo, si no a la dirección de primer elemento. Recuerda que los string en C son es una matriz.

Por consecuente, se puede así.

Código C:
Ver original
  1. void cambiarCadena(char * cadena){
  2.     strcpy(cadena, "Antonio");
  3. }

strcpy es una función que copia una cadena en una variable.

Saludos.
  #3 (permalink)  
Antiguo 06/02/2014, 06:06
 
Fecha de Ingreso: enero-2014
Mensajes: 4
Antigüedad: 5 años, 10 meses
Puntos: 0
Respuesta: Función que cambia valor de una cadena

Gracias, funcionó correctamente!

Etiquetas: cadena, paso, puntero, referencia, variable
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 17:36.