elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa con cadenas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa con cadenas  (Leído 1,599 veces)
muymuyperdido

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Programa con cadenas
« en: 2 Diciembre 2012, 18:12 pm »

Hola, tengo un problema de cadenas, que es introducir dos, destino y original y me tiene que devolver el programa la destino copiada en la original pero con los caracteres al revés.
Es mi 2 programa con cadenas y me da varios errores, yo lo he planteado así pero probablemente haya hecho alguna barbaridad, gracias :)

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define TAM 200
  4. void cambio (char v[], char m[]);
  5. void main(){
  6. char destino[TAM];
  7. char original[TAM];
  8. printf("Introduzca la primera cadena");
  9. gets(destino);
  10. printf("Introduzca la segunda cadena");
  11. gets(original);
  12. cambio(destino[TAM],original[TAM]);
  13. puts(destino);
  14. puts(original);
  15. }
  16. void cambio (char v[], char m[]){
  17.    int i;
  18.    strcat(char destino[TAM],char original[TAM]);
  19.    for(i=0;v[i]!='\0';i++){
  20.        char destino[i]=char destino[TAM-i-1];}
  21.  
  22. }


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Programa con cadenas
« Respuesta #1 en: 2 Diciembre 2012, 18:54 pm »

Lo primero que debe hacer es cambiar la definición de la función "main" y evitar el uso de "gets", por favor lee el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

El error principal en tu programa son las llamadas a la función cambio y strcat (esta ultima innecesaria):
Código
  1. cambio(destino[TAM],original[TAM]);
Solo debes utilizar los nombres de los arrays, de esta forma:
Código
  1. cambio(destino, original);

Y la función que invierte la cadena esta mal implementada, debería ser mas o menos así:
Código
  1. void reverse(char *dst, char const *src)
  2. {
  3.   int i;
  4.  
  5.   /* Encontramos el final de la cadena original */
  6.   for (i = 0; src[i] != '\0'; i++)
  7.      ;
  8.  
  9.   /* Almacenamos el indicador de fin de cadena */
  10.   dst[i] = '\0';
  11.  
  12.   /* Copiamos los demas caracteres */
  13.   while (i-- > 0)
  14.      *dst++ = src[i];
  15. }
Funciona pero con una limitante importante: no verifica la capacidad de los contenedores (arrays), si la cadena original sobrepasa la capacidad del array de destino el programa ...

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Programa con cadenas
« Respuesta #2 en: 2 Diciembre 2012, 19:02 pm »

Sin usar funciones y con strcat:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define TAM 200
  4. void cambio (char v[], char m[]);
  5. int main(){
  6.    int i;
  7.    char destino[TAM];
  8.    char destino_reves[TAM];
  9.    char original[TAM];
  10.    printf("Introduzca la primera cadena destino:");
  11.    gets(destino);
  12.    printf("Introduzca la segunda cadena original:");
  13.    gets(original);
  14.    for(i=0;destino[i]!='\0';i++){
  15.             destino_reves[i]= destino[strlen(destino)-i-1];}
  16.    destino_reves[i]='\0';
  17.    strcat( original, destino_reves);
  18.    puts(original);
  19.    return 0;
  20. }
Sorry, se me ha adelantado rir mientras posteaba esto.Y  como siempre claro y preciso en sus explicaciones.
Saluditos!.
« Última modificación: 2 Diciembre 2012, 19:13 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificar cadenas en programa compilado en Delphi « 1 2 »
Ingeniería Inversa
registrymaster 18 11,327 Último mensaje 13 Septiembre 2011, 13:38 pm
por apuromafo CLS
Programa que extraiga cadenas en file txt (C++)
Programación C/C++
fergosan 2 3,753 Último mensaje 31 Diciembre 2010, 22:10 pm
por leogtz
Crear un programa para operaciones con cadenas
Programación C/C++
Montse2293 6 4,250 Último mensaje 3 Enero 2011, 01:54 am
por Leyer
Un programa para cadenas?
Ingeniería Inversa
x64core 5 2,654 Último mensaje 3 Septiembre 2012, 07:17 am
por x64core
Programa con cadenas
Programación C/C++
muymuyperdido 3 1,731 Último mensaje 2 Diciembre 2012, 11:26 am
por muymuyperdido
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines