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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Invertir cadena de caracteres EN C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Invertir cadena de caracteres EN C  (Leído 6,373 veces)
estudiante_1

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Invertir cadena de caracteres EN C
« en: 23 Julio 2015, 01:15 am »

 Pues eso, quiero invertir una cadena de caracteres, no me sale del todo correcto, esto es lo que he hecho. Una ayuda por favor.



Código:
#include<ctype.h>
int main(void){
char cad[10];
printf("introduzca un nombre\n");
scanf("%s",cad);
printf("El nombre leido es: %s\n",cad);

char cadinv[10];
int i, temp, len,ultimo;
ultimo = strlen(cad) - 1;
for(i=0; i <= strlen(cad); i++){
    temp = cadinv[i];
    cadinv[i]=cad[ultimo - i];
    cad[ultimo - i] = temp;
}





puts(cadinv);


  system("pause");
return(0);

}


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Invertir cadena de caracteres EN C
« Respuesta #1 en: 23 Julio 2015, 01:49 am »

Código
  1.    temp = cadinv[i];
  2.    cadinv[i]=cad[ultimo - i];
  3.    cad[ultimo - i] = temp;

¿Qué se supone que es ese código? por que le asignas a cad[ultimo - i] el valor de cadinv[ i ]


En línea

user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Invertir cadena de caracteres EN C
« Respuesta #2 en: 23 Julio 2015, 01:54 am »

Esta es una solución posible:

Código
  1. #include<ctype.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. const int TAM = 10;
  6. int main(void){
  7.  char cad[TAM];
  8.  printf("introduzca un nombre\n");
  9.  scanf("%s",cad);
  10.  printf("El nombre leido es: %s\n",cad);
  11.  char cadinv[TAM];
  12.  
  13.  int i, e;
  14.  for(i = strlen(cad)-1, e = 0; 0 <=  i; i--, e++)
  15.      cadinv[e] = cad[i];
  16.   cadinv[e] = '\0';
  17.    printf("El nombre2 : %s\n",cadinv);
  18.  
  19.  
  20.  system("pause");
  21.  return(0);
  22.  
  23. }
  24.  

Tienes que saber que el último elemento de la cadena es '\0' que indica el final, por eso si haces:
Código
  1. cadinv[0]=cad[strlen(cad)];
  2.  
Asignas '\0' al primer elemento de la cadena lo que quiere decir que en la posición cero se cierra la cadena.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Invertir cadena de caracteres EN C
« Respuesta #3 en: 23 Julio 2015, 01:59 am »

un error... siempre tiene que ser menor que strlen (porque el array empieza en 0)

segundo piensa el codigo que haces...

imagina que la cadena es "españa"

Código:
ciclo i=0:
e
aspaña
aspañe

i=1
s
añpañe
añpase

i=2
p
añaase
añapse ---aqui está listo

i=3
p
añaase
añpase

i=4
s
añpañe
aspañe

i=5
e
aspaña
españa

el codigo está casi bien... que le falta?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
estudiante_1

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: Invertir cadena de caracteres EN C
« Respuesta #4 en: 23 Julio 2015, 02:26 am »

Gracias a todos por vuestras respuestas
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Invertir cadena?
PHP
yeikos 1 4,397 Último mensaje 10 Abril 2005, 05:18 am
por byebye
cadena de caracteres
Programación C/C++
Ander123 1 2,557 Último mensaje 6 Septiembre 2012, 14:15 pm
por avesudra
Invertir cadena de carácteres sobre si misma con punteros
Programación C/C++
dailia__ 2 3,910 Último mensaje 10 Mayo 2018, 08:24 am
por dailia__
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines