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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [39] 40 41 42 43 44 45 46 47 48 49
381  Programación / Programación C/C++ / Problema en agenda con ficheros en: 7 Febrero 2012, 23:05 pm
Hola.

Haciendo un ejercicio me he encontrado una duda.

Es este:

Código
  1. /*Una agenda que maneje los siguientes datos: nombre, dirección, tlf móvil, email, y día,
  2. mes y año de nacimiento (estos tres últimos datos deberán ser números enteros
  3. cortos). Deberá tener capacidad para 100 fichas. Se deberá poder añadir un dato
  4. nuevo, visualizar los nombres de las fichas existentes, o mostrar todos los datos de una
  5. persona (se preguntará al usuario cual es el nombre de esa persona que quiere
  6. visualizar). Al empezar el programa, leerá los datos de un fichero llamado “agenda.dat”
  7. (si existe). Al terminar, guardará todos los datos en ese fichero.*/
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12.  
  13. int main()
  14. {
  15.    struct
  16.    {
  17.      char nombre[10];
  18.      char direccion[15];
  19.      int movil;
  20.      char email[20];
  21.      short int dia, mes, ano;
  22.    }datos[100];
  23.    char lineas[500];
  24.    FILE* fichero;
  25.    int opcion;
  26.  
  27.    fichero = fopen("agenda.dat", "rt");
  28.    if(fichero != NULL)
  29.    {
  30.  
  31.    while(! feof(fichero)) //Leemos los datos que contiene al principio
  32.    {
  33.      fgets(lineas,25,fichero);
  34.    }
  35.    fclose(fichero);
  36.  
  37.    printf("Elija una opcion\n");
  38.    printf("1. Introducir datos\n");
  39.    printf("2. Visualizar nombres de las fichas existentes\n");
  40.    printf("3. Mostrar todos los datos de una persona\n");
  41.    scanf("%d",&opcion);
  42.  
  43.    switch(opcion)
  44.    {
  45.      case 1:
  46.           //En construcción, lo editaré según las respuestas que obtenga al preguntaros.
  47.           break;
  48.      case 2:
  49.           //En construcción, lo editaré según las respuestas que obtenga al preguntaros.
  50.           break;
  51.      case 3:
  52.           //En construcción, lo editaré según las respuestas que obtenga al preguntaros.
  53.           break;
  54.      default:
  55.              printf("Opcion no valida");
  56.    }
  57.    }
  58.  
  59.  
  60.  
  61.  
  62.    system("pause");
  63.    return 0;
  64. }
  65.  
  66.  

La idea que estoy siguiendo es que primero abro el archivo en modo de lectura. Entonces pongo los casos en los que tiene que leer el archivo, y los casos en los que no. Cierro el archivo.

Después, creo un switch, en el que elijo una de las tres opciones, y ahí planteo cada cosa.

Y, finalmente, abro de nuevo el archivo, pero esta vez para escribir, y meto los datos obtenidos en el switch.

Mi problema es que no sé cómo hacer para que al cerrar el programa y volver a abrirlo sepa que ya he metido un número determinado de fichas (no sé si me explico). Creo que solo es con un do-while en el switch de "añadir datos", sumándole uno a "i", pero no estoy seguro.

También me gustaría saber si veis bien como he planteado el problema, para ver cómo puedo cambiar las cosas.

Muchísimas gracias.

Saludos.
382  Programación / Programación C/C++ / Re: Problema en ejercicio de ficheros en: 5 Febrero 2012, 15:50 pm
Muchísimas gracias.

Ya he entendido cómo se hace.

Saludos.
383  Programación / Programación C/C++ / Re: Problema en ejercicio de ficheros en: 5 Febrero 2012, 15:17 pm
Gracias por contestar.

Eso lo tengo, aunque de otra forma (comparando "pausar" con "").

Lo que me falta es que cada 25 líneas pare, que no sé cómo podría hacerlo...
384  Programación / Programación C/C++ / Re: Problema al abrir binario en C en: 4 Febrero 2012, 23:30 pm
A mí con ese mismo código (el que puse yo, que era el tuyo pero con gets en vez de fgets), me he funcionado bien. Poniendo hola.txt (mi archivo se llama hola). Será entonces porque usas Linux y yo Windows...
385  Programación / Programación C/C++ / Re: Problema al abrir binario en C en: 4 Febrero 2012, 23:20 pm
Como dije en el otro mensaje. ¿Has probado ya a poner en la consola el nombre del archivo seguido de .txt o la extensión que tenga tu archivo?

Si es así, no se me ocurre qué puede fallar.

Yo uso Windows, pero creo (aunque no estoy seguro) que en este caso es igual.
386  Programación / Programación C/C++ / Re: Problema al abrir binario en C en: 4 Febrero 2012, 23:14 pm
¿Seguro que poniendo esto no te va?

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int openbin(void);
  5.  
  6. int main(){
  7.  
  8. openbin();
  9. return 0;
  10.  
  11. }
  12.  
  13. int openbin(void){
  14.  
  15.   FILE *pfile;
  16.   char namebin[50];
  17.        printf("Name:\n");
  18.  
  19.        gets(namebin);
  20.   if ((pfile = fopen(namebin, "rb"))== NULL)
  21.   {
  22.      printf("Couldn't open the file\n");
  23.      exit(1);
  24.   }
  25.   printf("The file was opened successfully\n");
  26.  
  27.   return 0;
  28. }
  29.  

Si es eso lo que has puesto, cuando te pida el nombre del archivo en la consola, pon el nombre del fichero seguido de .txt (o la extensión que tenga).
387  Programación / Programación C/C++ / Re: Problema en ejercicio de ficheros en: 4 Febrero 2012, 22:49 pm
Vale, he solucionado uno de los problemas. Ya me reconoce cuándo existe y cuándo no un archivo. Lo que he hecho ha sido sustituir fgets por gets.

Pero todavía me queda la otra parte del problema.

Gracias.

Saludos.
388  Programación / Programación C/C++ / Problema en ejercicio de ficheros en: 4 Febrero 2012, 21:33 pm
Hola.

Estoy empezando con el tema de ficheros.

Tengo este ejercicio:

Código
  1. /*Un programa que pregunte un nombre de fichero y muestre en pantalla el contenido de
  2. ese fichero, haciendo una pausa después de cada 25 líneas, para que dé tiempo a
  3. leerlo. Cuando el usuario pulse intro, se mostrarán las siguientes 25 líneas, y así hasta
  4. que termine el fichero.*/
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10.  
  11. int main()
  12. {
  13.    FILE* fichero;
  14.    char nombre[50];
  15.    char linea[81];
  16.    char pausar[2];
  17.    int i;
  18.  
  19.    printf("Introduce un nombre");
  20.    fgets(nombre,49,stdin);
  21.    i=0;
  22. fichero = fopen(nombre, "rt");
  23. if (fichero == NULL)
  24. {
  25. printf("No existe el fichero!\n");
  26. exit(1);
  27. }
  28. while (! feof(fichero)) {
  29.                i=i+25;
  30. fgets(linea, i, fichero);
  31. puts(linea);
  32. do{
  33. gets(pausar);
  34. }
  35. while(strcmp(pausar,"")!=0);            
  36.  
  37. }
  38.  
  39. fclose(fichero);
  40.  
  41.    system("pause");
  42.    return 0;
  43. }
  44.  

Pero tengo varias cosas mal:

- Siempre me dice que el fichero no existe.
- No consigo que pare cada 25 líneas hasta que presione intro sin escribir nada (lo que he conseguido ha sido cada X letras...).

Muchas gracias.

Saludos.
389  Programación / Programación C/C++ / Re: Imprimir una sola vez el mensaje en C en: 3 Febrero 2012, 22:33 pm
Pues yo utilizo la misma versión de tu compilador (DEV-C++ 4.9.9.2), y sin usar esa librería no me compila bien xD (y, de hecho, en los manuales que tengo viene que es necesario usar dicha librería...)
390  Programación / Programación C/C++ / Re: Imprimir una sola vez el mensaje en C en: 3 Febrero 2012, 22:25 pm
¿La tercera librería?

Esa contiene strcmp, necesario para hacer la comparación. ¿Te compiló sin usarla?
Páginas: 1 ... 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [39] 40 41 42 43 44 45 46 47 48 49
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines