Invertir cadena de caracteres EN C

Iniciado por estudiante_1, 23 Julio 2015, 01:15 AM

0 Miembros y 1 Visitante están viendo este tema.

estudiante_1

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



#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);

}

ivancea96

    temp = cadinv[i];
    cadinv[i]=cad[ultimo - i];
    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 ]

user-marcos

Esta es una solución posible:


#include<ctype.h>
#include <stdio.h>
#include <string.h>

const int TAM = 10;
int main(void){
 char cad[TAM];
 printf("introduzca un nombre\n");
 scanf("%s",cad);
 printf("El nombre leido es: %s\n",cad);
 char cadinv[TAM];

 int i, e;
 for(i = strlen(cad)-1, e = 0; 0 <=  i; i--, e++)
     cadinv[e] = cad[i];
  cadinv[e] = '\0';
   printf("El nombre2 : %s\n",cadinv);
 
 
 system("pause");
 return(0);
 
}


Tienes que saber que el último elemento de la cadena es '\0' que indica el final, por eso si haces:

cadinv[0]=cad[strlen(cad)];

Asignas '\0' al primer elemento de la cadena lo que quiere decir que en la posición cero se cierra la cadena.

engel lex

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"

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?
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

Gracias a todos por vuestras respuestas