[C con Clase] Código para hacer un RFC

David Reza l.fix3r.l en gmail.com
Vie Oct 10 05:24:35 CEST 2008


Hola a todos, un comáñero tiene un código para hacer un RFC, le ayudé a
hacerlo y no le veo ningún problema pero simplemente no funciona como nos
gustaría que fuera. Aquí les dejo el código para que lo chequen y si
encuentran algún error me lo puedan hacer saber. El código está en C, y el
problema es que poniendo mis datos, sólo me salen las primeras 2 letras del
RFC.


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

void FRFC(char *nombre, char *appaterno, char *apmaterno, char *dia, char
*mes, char *ano);
char FEsvocal(char *appaterno);

int main(void){
    char nombre[11],appaterno[11],apmaterno[11],dia[2],mes[2],ano[4],*vocal;

    printf("Nombre: ");
    scanf("%s",nombre);
    printf("Apellido paterno: ");
    scanf("%s",appaterno);
    printf("Apellido materno: ");
    scanf("%s",apmaterno);
    printf("Dia: ");
    scanf("%s",dia);
    printf("Mes: ");
    scanf("%s",mes);
    printf("Ano: ");
    scanf("%s",ano);


    FRFC(nombre, appaterno, apmaterno, dia, mes, ano);

    scanf("%s", ano);  /* Esto lo puse solamente para detener la ejecución
en la consola. No sé mucho de C y no sé cuál es el equivalente al
'cin.ignore()' de C++ */

    return 0;
}

void FRFC(char *nombre, char *appaterno, char *apmaterno, char *dia, char
*mes, char *ano){
    char RFC[10];

    RFC[0] = appaterno[0];
    RFC[1] = FEsvocal(appaterno);
    RFC[2] = apmaterno[0];  /* Si aquí le pongo 'apmaterno[1]' sí me muestra
el caracter correspondiente, pero así como está no muestra nada */
    RFC[3] = nombre[0];
    RFC[4] = ano[2];
    RFC[5] = ano[3];
    RFC[6] = mes[0];
    RFC[7] = mes[1];
    RFC[8] = dia[0];
    RFC[9] = dia[1];

    printf("\nTu RFC es: %s", RFC);
    /* Aquí mando a imprimir dentro de la función porque sinceramente no sé
cómo devolver todo el arreglo y así poder imprimirlo en 'main()'. Sé que
podría pasarle otro puntero a la función y modificar ese puntero y usarlo
desde 'main()' pero como mi amigo no ha visto ese tema pues no quiero
confundirlo */
}

char FEsvocal(char *appaterno){
    char vocal;
    int k;

    for(k=1;k<=3;k++){
        switch(appaterno[k]){
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                case 'A':
                case 'E':
                case 'I':
                case 'O':
                case 'U': return appaterno[k];
        }
    }
}

Gracias de antemano.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20081009/906a3dd5/attachment.html>


Más información sobre la lista de distribución Cconclase