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

Cadena de caracteres y strcpy

Estas en el tema de Cadena de caracteres y strcpy en el foro de C/C++ en Foros del Web. Hola pues mi mira mi pregunta es la siguiente yo tengo la cadena de caracteres EMBAUCAR, y quiero copiar a otra varible a partir de ...
  #1 (permalink)  
Antiguo 10/06/2008, 07:08
 
Fecha de Ingreso: abril-2008
Mensajes: 28
Antigüedad: 16 años
Puntos: 0
Cadena de caracteres y strcpy

Hola pues mi mira mi pregunta es la siguiente yo tengo la cadena de caracteres EMBAUCAR, y quiero copiar a otra varible a partir de la posicion 4, osea UCAR.

Como lo puedo hacer?

muchas gracias!
  #2 (permalink)  
Antiguo 11/06/2008, 06:29
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cadena de caracteres y strcpy

La funcion "strcpy" copia toda la cadena que sepa yo... vas a tener que hacelo por arrays y aparti de la posicion que quieras copiar caracter por caracter en la otra variable...

Al final sera algo asi aunque no se si del todo bien (lo de declarar en blanco la array)... simple pero bueno...

Código:
#include <stdio.h>
#include <string.h> 
#define MAX 10 

void main()
{
	char palabra[MAX]=("");
	char palabra_copiada[MAX]=("");
	int i=0,n=0;

	printf("Introduce una palabra: ");
	gets(palabra);
	fflush(stdin);


	for(i=0;i<int(strlen(palabra));i++)
	{
		if(i>=4)
		{
			palabra_copiada[n]=palabra[i];
			n++;
		}
	}
	puts(palabra_copiada);

}

a ver que mas te dicen...
  #3 (permalink)  
Antiguo 15/06/2008, 09:23
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Cadena de caracteres y strcpy

si la variable emb contiene "EMBAUCAR" y la variable otro es un arreglo de caracteres, bastaria con:

strcpy( otro, emb + 4 )
  #4 (permalink)  
Antiguo 15/06/2008, 09:58
 
Fecha de Ingreso: marzo-2008
Mensajes: 306
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: Cadena de caracteres y strcpy

La solución de CalgaryCorpus es la correcta habitualmente.

Pero si en la variable emb falta el fin de cadena '\0' no puede usar la función strcpy() y debe usarse la función memcpy() o memmove():

memcpy( otro, emb+4, 4 );
memmove( otro, emb+4, 4 );

NOTAS:
- El tercer parámetro, 4 en los ejemplos, es el número de caracteres a copiar.
- memmove se usaría si "otro" y "emb" se solapan entre sí. Por ejemplo porque apuntan a la misma zona de memoria, o forman parete de una union, ...
- Si se necesitase un '\0' en el destino habría que ponerlo manualmente (siempre que quepa):
*(otro+4) = '\0';
__________________
Pop & Rock Bands
Pop Music Stars
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 15:48.