Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/11/2014, 17:35
Madh
 
Fecha de Ingreso: octubre-2013
Mensajes: 44
Antigüedad: 10 años, 6 meses
Puntos: 5
Respuesta: Capitalizar un nombre con c/c++

Hola.

Si no he entendido mal, lo que pretendes es esto: EsTdAR -> Estdar. Asi que vamos por partes:

1) Te recomiendo, es que no utilices un bucle for, utiliza un while. ¿Por qué? Bueno, los bucles for son utilizados cuando conoces tanto el inicio como el final de una iteración, algo que no conoces a no ser que calcules el tamaño de la cadena una vez introducida.

2) Por otro lado, te aconsejaria que en vez de mostrar por pantalla cada caracter, mostraras la cadena ya transformada.

3) No utilices gets() pudiendo utilizar scanf().

Una vez dicho esto, vamos allá con la implemetentación:

Código:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int i;

    char nombre[20], nom[20], ape[20];

    printf("introduce tu nombre completo: ");
    scanf("%s",nombre);     // Leer cadena y almacenarla en nombre

    if(nombre[0]>=97 && nombre[0]<=122)
        nombre[0] = nombre[0]-32;   // equivalente a: nombre[i] -= 32;

    i=1;

    while (nombre[i] != '\0'){      //mientras no se llegue al final de la cadena, ejecutar

        if(nombre[i]>=65 && nombre[i]<=90)
            nombre[i] = nombre[i]+32;   // equivalente a: nombre[i] += 32;
        i++;
    }

    printf("%s\n",nombre);    // mostrar resultado por pantalla

    return 0;
}
Saludos