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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10
41  Programación / Programación C/C++ / Crear registro en: 17 Febrero 2015, 02:17 am
Hola, hoy tenía una duda. Quiero crear un registro dependiendo de cuantos campos escriba el usuario.

Ejemplo:

El usuario ingresa que quiere un registro de 5 enteros. Como hago para crear un registro dependiendo de lo que escribe el usuario?

Saludos
42  Programación / Programación C/C++ / Re: Problema - Registros y archivos en: 6 Noviembre 2014, 13:19 pm
Termine de editarlo y le agregue un fclose mas que me faltaba, pero sigue tirando el mismo error :S

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6.    int legajo;
  7.    char CUIL[13];
  8.    char nombre[31];
  9.    char apellido[31];
  10.    char sexo[3];
  11.    char categoria[3];
  12.    char obrasocial[51];
  13.    float sueldo;
  14.    char activo[2];
  15. } registro;
  16.  
  17. /*****************************************************************************/
  18.  
  19. void CargarRegistro()
  20. {
  21. registro reg;
  22.    FILE *archivo;
  23.  
  24. archivo = fopen("empleados.dat", "a");
  25.    if(archivo == NULL)
  26. {
  27. printf("No se pudo abrir el archivo\n");
  28. return;
  29. }
  30.  
  31.    printf("Ingrese CUIL (Formato xx-xxxxxxxxxx): \n");
  32.    scanf("%s", reg.CUIL);
  33.    printf("Ingrese Nombre: \n");
  34.    scanf("%s", reg.nombre);
  35.    printf("Ingrese Apellido: \n");
  36.    scanf("%s", reg.apellido);
  37.    printf("Ingrese sexo: \n");
  38.    scanf("%s", reg.sexo);
  39.    printf("Ingrese categoria: \n");
  40.    scanf("%s", reg.categoria);
  41.    printf("Ingrese Obra social: \n");
  42.    scanf("%s", reg.obrasocial);
  43.    printf("Ingrese sueldo: \n");
  44.    scanf("%f", &reg.sueldo);
  45.    reg.activo[0] = '1';
  46.  
  47.    fwrite(&reg, sizeof(registro), 1, archivo);
  48.  
  49.    fclose(archivo);
  50.  
  51.    return;
  52. }
  53.  
  54. void Alta(registro datos)
  55. {
  56.    int legajo = 0, encontrado = 0;
  57.    FILE *archivo;
  58.  
  59.    printf("Ingrese un numero de legajo (0 para salir): \n");
  60.    scanf("%d", &legajo);
  61.  
  62.    while(legajo != 0)
  63.    {
  64.     archivo = fopen("empleados.dat", "r");
  65.        if(archivo == NULL)
  66.        {
  67.            printf("No se pudo abrir el archivo\n");
  68.            return;
  69.        }
  70.  
  71.        fread(&datos, sizeof(registro), 1, archivo);
  72.        while((!feof(archivo)) && (encontrado == 0))
  73.        {
  74.            if(datos.legajo == legajo)
  75.            {
  76.                encontrado = 1;
  77.                fclose(archivo);
  78.            }
  79.  
  80.            fread(&datos, sizeof(registro), 1, archivo);
  81.        }
  82.  
  83.        if(encontrado == 1)
  84.        {
  85.            printf("El legajo ya existe\n");
  86.            return;
  87.        }
  88.        else
  89.        {
  90.         fclose(archivo);
  91.            CargarRegistro();
  92.        }
  93.  
  94.        return;
  95.    }
  96. }
  97.  
  98. /*****************************************************************************/
  99.  
  100. void Baja(registro datos)
  101. {
  102.    int legajo = 0;
  103.    int confirmar = 0;
  104.    FILE *archivo;
  105.  
  106.    printf("Ingrese un numero de legajo (0 para salir): \n");
  107.    scanf("%d", &legajo);
  108.  
  109.    while(legajo != 0)
  110.    {
  111.     archivo = fopen("empleados.dat", "r+");
  112.        if(archivo == NULL)
  113.        {
  114.            printf("No se pudo abrir el archivo\n");
  115.            return;
  116.        }
  117.  
  118.        fread(&datos, sizeof(registro), 1, archivo);
  119.        while(!feof(archivo))
  120.        {
  121.            if((datos.legajo == legajo) && (datos.activo[0] == '1'))
  122.            {
  123.                printf("Esta seguro que desea dar de baja el registro?\n[ 1 ] - Si\n[ 2 ] - No\n");
  124.                scanf("%d", &confirmar);
  125.  
  126.                while((confirmar != 0) && (confirmar != 1))
  127.                {
  128.                    printf("Opcion incorrecta. Esta seguro que desea dar de baja el registro?\n[ 1 ] - Si\n[ 2 ] - No\n");
  129.                    scanf("%d", &confirmar);
  130.                }
  131.  
  132.                switch(confirmar)
  133.                {
  134.                    case 1:
  135.                        datos.activo[0] = '0';
  136.                        fwrite(&datos, sizeof(registro), 1, archivo);
  137.                        fclose(archivo);
  138.                        return;
  139.                        break;
  140.  
  141.                    case 2: return; break;
  142.                }
  143.  
  144.            }
  145.  
  146.            fread(&datos, sizeof(registro), 1, archivo);
  147.        }
  148.  
  149.        fclose(archivo);
  150.  
  151.    }
  152. }
  153.  
  154. /*****************************************************************************/
  155.  
  156. int OpcionModif(registro reg, int x)
  157. {
  158.    printf("Datos del empleado a modificar:\n");
  159.    printf("%d\n", reg.legajo);
  160.    printf("%s\n", reg.CUIL);
  161.    printf("%s\n", reg.nombre);
  162.    printf("%s\n", reg.apellido);
  163.    printf("%s\n", reg.sexo);
  164.    printf("%s\n", reg.categoria);
  165.    printf("%s\n", reg.obrasocial);
  166.    printf("%f\n", reg.sueldo);
  167.    printf("%s\n", reg.activo);
  168.  
  169.    printf("Elija que dato desea modificar\n");
  170.    printf("[ 1 ] - Sexo\n[ 2 ] - Categoria\n[ 3 ] - Obra social\n[ 4 ] - Sueldo\nIngrese cualquier otro numero para salir\n");
  171.    scanf("%d", &x);
  172.  
  173.    while( (x < 0) && (x > 5) )
  174.    {
  175.        printf("Elija que dato desea modificar\n");
  176.        printf("[ 1 ] - Sexo\n[ 2 ] - Categoria\n[ 3 ] - Obra social\n[ 4 ] - Sueldo\nIngrese cualquier otro numero para salir\n");
  177.        scanf("%d", &x);
  178.    }
  179.  
  180.    return x;
  181. }
  182.  
  183. void Modificar(registro datos)
  184. {
  185.    int legajo = 0, opc = 0;
  186.    FILE *archivo;
  187.  
  188.    printf("Ingrese un numero de legajo (0 para salir): \n");
  189.    scanf("%d", &legajo);
  190.  
  191.    while(legajo != 0)
  192.    {
  193.     archivo = fopen("empleados.dat", "r+");
  194.        if(archivo == NULL)
  195.        {
  196.            printf("No se pudo abrir el archivo\n");
  197.            return;
  198.        }
  199.  
  200.        fread(&datos, sizeof(registro), 1, archivo);
  201.  
  202.        while(!feof(archivo))
  203.        {
  204.            if((datos.legajo == legajo) && (datos.activo[0] = '1'))
  205.            {
  206.                opc = OpcionModif(datos, opc);
  207.  
  208.                switch(opc)
  209.                {
  210.                    case 1:
  211.                        printf("Ingrese el sexo:\n");
  212.                        scanf("%s", datos.sexo);
  213.                        break;
  214.                    case 2:
  215.                        printf("Ingrese categoria:\n");
  216.                        scanf("%s", datos.categoria);
  217.                        break;
  218.                    case 3:
  219.                        printf("Ingrese Obra Social:\n");
  220.                        scanf("%s", datos.obrasocial);
  221.                        break;
  222.                    case 4:
  223.                        printf("Ingrese sueldo:\n");
  224.                        scanf("%f", &datos.sueldo);
  225.                        break;
  226.                }
  227.  
  228.                fwrite(&datos, sizeof(registro), 1, archivo);
  229.                fclose(archivo);
  230.                return;
  231.  
  232.            }
  233.            fread(&datos, sizeof(registro), 1, archivo);
  234.        }
  235.  
  236.  
  237.    }
  238.    printf("El legajo no existe\n");
  239.    fclose(archivo);
  240. }
  241.  
  242. /*****************************************************************************/
  243.  
  244. int main()
  245. {
  246.    int opcmenu = 1;
  247.    registro empleados;
  248.    FILE *archivo;
  249.  
  250.    while((opcmenu > 0) && (opcmenu < 7))
  251.    {
  252.        printf("Seleccione entre una de las opciones disponibles\n");
  253.        printf("[ 1 ] - Altas\n[ 2 ] - Bajas\n[ 3 ] - Modificacion\n[ 4 ] - Listado\n[ 5 ] - Aumentar salario\n[ 6 ] - Buscar por legajo\n[ 7 ] - Salir\n");
  254.        scanf("%d", &opcmenu);
  255.  
  256.        switch(opcmenu)
  257.        {
  258.            case 1: Alta(empleados); break;
  259.            case 2: Baja(empleados); break;
  260.            case 3: Modificar(empleados); break;
  261.            case 7: return -1; break;
  262.  
  263.        }
  264.    }
  265.  
  266.    return 0;
  267. }
43  Programación / Programación C/C++ / Re: Problema - Registros y archivos en: 6 Noviembre 2014, 12:47 pm
Muchas gracias por las respuestas. El único problema que me queda es que en bajas y en modificación no se abre el archivo, ya teniendolo creado... No logré encontrar el error, ya que en Altas me abre y carga perfecto pero en Bajas y modificación no, y esta tal cual.

Saludos
44  Programación / Programación C/C++ / Problema - Registros y archivos en: 5 Noviembre 2014, 22:08 pm
Bueno, tengo un TP para la universidad de un programa de registros y archivos.  Tengo varios problemas lógicos, pero el que mas me interesa es el que al terminar un procedimiento, por ejemplo Altas, directamente va a otra opcion sin ingresar nada, y recorre todos los procedimientos sin que yo se lo indique.

Acá les dejo el código que tengo hasta ahora:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6.    int legajo;
  7.    char CUIL[13];
  8.    char nombre[31];
  9.    char apellido[31];
  10.    char sexo[3];
  11.    char categoria[3];
  12.    char obrasocial[51];
  13.    float sueldo;
  14.    char activo[2];
  15. } registro;
  16.  
  17. /*****************************************************************************/
  18.  
  19. void CargarRegistro()
  20. {
  21.    registro reg;
  22.    FILE *archivo;
  23.  
  24.    if((archivo = fopen("empleados.dat", "a")) == NULL)
  25. {
  26. printf("No se pudo abrir el archivo\n");
  27. return;
  28. }
  29.  
  30.    printf("Ingrese CUIL (Formato xx-xxxxxxxxxx): \n");
  31.    scanf("%s", reg.CUIL);
  32.    printf("Ingrese Nombre: \n");
  33.    scanf("%s", reg.nombre);
  34.    printf("Ingrese Apellido: \n");
  35.    scanf("%s", reg.apellido);
  36.    printf("Ingrese sexo: \n");
  37.    scanf("%s", reg.sexo);
  38.    printf("Ingrese categoria: \n");
  39.    scanf("%s", reg.categoria);
  40.    printf("Ingrese Obra social: \n");
  41.    scanf("%s", reg.obrasocial);
  42.    printf("Ingrese sueldo: \n");
  43.    scanf("%f", &reg.sueldo);
  44.    reg.activo[0] = '1';
  45.  
  46.    fwrite(&reg, sizeof(registro), 1, archivo);
  47.  
  48.    fclose(archivo);
  49.  
  50.    return;
  51. }
  52.  
  53. void Alta(registro datos)
  54. {
  55.    int legajo = 0, encontrado = 0;
  56.    FILE *archivo;
  57.  
  58.    printf("Ingrese un numero de legajo (0 para salir): \n");
  59.    scanf("%d", &legajo);
  60.  
  61.    while(legajo != 0)
  62.    {
  63.        if((archivo = fopen("empleados.dat", "r")) == NULL)
  64.        {
  65.            printf("No se pudo abrir el archivo\n");
  66.            return;
  67.        }
  68.  
  69.        fread(&datos, sizeof(registro), 1, archivo);
  70.        while((!feof(archivo)) && (encontrado == 0))
  71.        {
  72.            if(datos.legajo == legajo)
  73.            {
  74.                encontrado = 1;
  75.                fclose(archivo);
  76.            }
  77.  
  78.            fread(&datos, sizeof(registro), 1, archivo);
  79.        }
  80.  
  81.        if(encontrado == 1)
  82.        {
  83.            printf("El legajo ya existe\n");
  84.            return;
  85.        }
  86.        else
  87.        {
  88.            CargarRegistro();
  89.        }
  90.  
  91.        return;
  92.    }
  93. }
  94.  
  95. /*****************************************************************************/
  96.  
  97. void Baja(registro datos)
  98. {
  99.    int legajo = 0;
  100.    int confirmar = 0;
  101.    FILE *archivo;
  102.  
  103.    printf("Ingrese un numero de legajo (0 para salir): \n");
  104.    scanf("%d", &legajo);
  105.  
  106.    while(legajo != 0)
  107.    {
  108.        if((archivo = fopen("empleados.dat", "rt")) == NULL)
  109.        {
  110.            printf("No se pudo abrir el archivo\n");
  111.            return;
  112.        }
  113.  
  114.        fread(&datos, sizeof(registro), 1, archivo);
  115.        while(!feof(archivo))
  116.        {
  117.            if((datos.legajo == legajo) && (datos.activo[0] == '1'))
  118.            {
  119.                printf("Esta seguro que desea dar de baja el registro?\n[ 1 ] - Si\n[ 2 ] - No\n");
  120.                scanf("%d", &confirmar);
  121.                while((confirmar != 0) && (confirmar != 1))
  122.                {
  123.                    printf("Opcion incorrecta. Esta seguro que desea dar de baja el registro?\n[ 1 ] - Si\n[ 2 ] - No\n");
  124.                    scanf("%d", &confirmar);
  125.                }
  126.  
  127.                switch(confirmar)
  128.                {
  129.                    case 1:
  130.                        datos.activo[0] = '0';
  131.                        fwrite(&datos, sizeof(registro), 1, archivo);
  132.                        fclose(archivo);
  133.                        return;
  134.  
  135.                    case 2: return;
  136.                }
  137.  
  138.            }
  139.  
  140.            fread(&datos, sizeof(registro), 1, archivo);
  141.        }
  142.  
  143.        fclose(archivo);
  144.  
  145.    }
  146. }
  147.  
  148. /*****************************************************************************/
  149.  
  150. int OpcionModif(registro reg, int x)
  151. {
  152.    printf("Datos del empleado a modificar:\n");
  153.    printf("%d\n", reg.legajo);
  154.    printf("%s\n", reg.CUIL);
  155.    printf("%s\n", reg.nombre);
  156.    printf("%s\n", reg.apellido);
  157.    printf("%s\n", reg.sexo);
  158.    printf("%s\n", reg.categoria);
  159.    printf("%s\n", reg.obrasocial);
  160.    printf("%f\n", reg.sueldo);
  161.    printf("%s\n", reg.activo);
  162.  
  163.    printf("Elija que dato desea modificar\n");
  164.    printf("[ 1 ] - Sexo\n[ 2 ] - Categoria\n[ 3 ] - Obra social\n[ 4 ] - Sueldo\nIngrese cualquier otro numero para salir\n");
  165.    scanf("%d", &x);
  166.  
  167.    while( (x < 0) && (x > 5) )
  168.    {
  169.        printf("Elija que dato desea modificar\n");
  170.        printf("[ 1 ] - Sexo\n[ 2 ] - Categoria\n[ 3 ] - Obra social\n[ 4 ] - Sueldo\nIngrese cualquier otro numero para salir\n");
  171.        scanf("%d", &x);
  172.    }
  173.  
  174.    return x;
  175. }
  176.  
  177. void Modificar(registro datos)
  178. {
  179.    int legajo = 0, opc = 0;
  180.    FILE *archivo;
  181.  
  182.    printf("Ingrese un numero de legajo (0 para salir): \n");
  183.    scanf("%d", &legajo);
  184.  
  185.    while(legajo != 0)
  186.    {
  187.        if((archivo = fopen("empleados.dat", "r")) == NULL)
  188.        {
  189.            printf("No se pudo abrir el archivo\n");
  190.            return;
  191.        }
  192.  
  193.        fread(&datos, sizeof(registro), 1, archivo);
  194.  
  195.        while(!feof(archivo))
  196.        {
  197.            if((datos.legajo == legajo) && (datos.activo[0] = '1'))
  198.            {
  199.                opc = OpcionModif(datos, opc);
  200.  
  201.                switch(opc)
  202.                {
  203.                    case 1:
  204.                        printf("Ingrese el sexo:\n");
  205.                        scanf("%s", datos.sexo);
  206.                    case 2:
  207.                        printf("Ingrese categoria:\n");
  208.                        scanf("%s", datos.categoria);
  209.                    case 3:
  210.                        printf("Ingrese Obra Social:\n");
  211.                        scanf("%s", datos.obrasocial);
  212.                    case 4:
  213.                        printf("Ingrese sueldo:\n");
  214.                        scanf("%f", &datos.sueldo);
  215.                }
  216.  
  217.                fwrite(&datos, sizeof(registro), 1, archivo);
  218.                fclose(archivo);
  219.                return;
  220.  
  221.            }
  222.            fread(&datos, sizeof(registro), 1, archivo);
  223.        }
  224.  
  225.  
  226.    }
  227.    printf("El legajo no existe\n");
  228. }
  229.  
  230. /*****************************************************************************/
  231.  
  232. int main()
  233. {
  234.    int opcmenu = 1;
  235.    registro empleados;
  236.  
  237.    while((opcmenu > 0) && (opcmenu < 7))
  238.    {
  239.        printf("Seleccione entre una de las opciones disponibles\n");
  240.        printf("[ 1 ] - Altas\n[ 2 ] - Bajas\n[ 3 ] - Modificacion\n[ 4 ] - Listado\n[ 5 ] - Aumentar salario\n[ 6 ] - Buscar por legajo\n[ 7 ] - Salir\n");
  241.        scanf("%d", &opcmenu);
  242.  
  243.        switch(opcmenu)
  244.        {
  245.            case 1: Alta(empleados);
  246.            case 2: Baja(empleados);
  247.            case 3: Modificar(empleados);
  248.            case 7: return -1;
  249.  
  250.        }
  251.    }
  252.  
  253.    return 0;
  254. }
45  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: [OFF] ¿Se puede interferir un numero de celular? en: 12 Octubre 2014, 01:11 am
Sí, no lo quise poner en Foro Libre por eso. Gracias por el artículo, era la info que estaba buscando. Gracias!
46  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / [OFF] ¿Se puede interferir un numero de celular? en: 12 Octubre 2014, 00:39 am
Eso mismo, me surgió esta duda escuchando sobre un secuestro en el que los secuestradores dicen que "interfirieron" el numero del celular del hijo, osea las victimas llamaban al celular del secuestrado y lo atendían ellos (Cuando en realidad el hijo no estaba secuestrado). Es posible interferir una señal sin ayuda de alguien interno en una empresa de telefonía?
47  Programación / Programación C/C++ / Re: Problema con registros en: 4 Septiembre 2014, 22:50 pm
rir, gracias como siempre. Resolví todos los errores pero no entendí lo siguiente:

* En ambas funciones utilizas la notación "(*variable).campo" cuando puedes acortar evitando los paréntesis con "variable->campo".

No entiendo a que te refieres con: variable->campo

Y lo otro que no entendí es lo siguiente:

Código
  1. while (feof(*db) == 0){
  2.   fgets((*clientes).apellido, 30, *db);
  3.   printf("%s\n", (*clientes).nombre);
  4.  
  5.   /* ... */
  6.  
  7.   fscanf(*db, "%d", &(*clientes).edad);
  8.   printf("%d\n", (*clientes).edad);
  9.  
  10.   {
  11.      int ch;
  12.  
  13.      while ((ch = fgetc(*db)) != EOF && ch != '\n')
  14.         ;
  15.   }
  16. }

No entiendo que hace el segundo while y cuando entraría adentro de esas llaves
48  Programación / Programación C/C++ / Problema con registros en: 4 Septiembre 2014, 01:54 am
Hola, tengo un problema al leer un archivo en el que guardo un registro. El problema es que me muestra varios signos y numeros que yo no ingrese. Les paso a dejar las funciones en donde escribo y leo el fichero (Paso el fichero y el archivo por referencia):

Código
  1. void DarDeAlta(registro *clientes, int n, FILE **db)
  2. {
  3.    int a = 1;
  4.  
  5.    while (a == 1)
  6.    {
  7.        printf("Ingrese un nombre: ");
  8.        scanf("%s", ((*clientes).nombre));
  9.        fprintf(*db, "%s\n", (*clientes).nombre);
  10.  
  11.        printf("Ingrese su apellido: ");
  12.        scanf("%s", ((*clientes).apellido));
  13.        fprintf(*db, "%s\n", (*clientes).apellido);
  14.  
  15.        printf("Ingrese el telefono: ");
  16.        scanf("%d", &(*clientes).telefono);
  17.        fprintf(*db, "%d\n", (*clientes).telefono);
  18.  
  19.        printf("Ingrese la edad: ");
  20.        scanf("%d", &(*clientes).edad);
  21.        fprintf(*db, "%d\n", (*clientes).edad);
  22.  
  23.        Seguir(&a);
  24.    }
  25.  
  26.    fclose(*db);
  27.    return;
  28. }
  29.  
  30. void MostrarClientes(registro *clientes, int n, FILE **db)
  31. {
  32.    *db = fopen("clientes.dat", "r");
  33.    if(*db == NULL)
  34.    {
  35.        printf("El archivo no existe\n");
  36.    }
  37.    else{
  38.        while(feof(*db) == 0)
  39.        {
  40.            fgets((*clientes).apellido, 30, *db);
  41.            printf("%s\n", (*clientes).nombre);
  42.  
  43.            fgets((*clientes).apellido, 30, *db);
  44.            printf("%s\n", (*clientes).apellido);
  45.  
  46.            fscanf(*db, "%d", &(*clientes).telefono);
  47.            printf("%d\n", (*clientes).telefono);
  48.  
  49.            fscanf(*db, "%d", &(*clientes).edad);
  50.            printf("%d\n", (*clientes).edad);
  51.        }
  52.    }
  53.  
  54.    fclose(*db);
  55.    return;
  56. }
49  Programación / Programación C/C++ / Re: Se puede programar en C en un programa de C++? en: 2 Septiembre 2014, 20:16 pm
Code::Blocks + MinGW
50  Programación / Programación C/C++ / Re: ¿cómo hago un hook a gettickcount en c++? en: 31 Agosto 2014, 07:12 am
Fijate si te sirve:

http://foro.elhacker.net/ingenieria_inversa/iquesthacer_hook_a_gettickcount-t416676.0.html
Páginas: 1 2 3 4 [5] 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines