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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema en ejercicio de ficheros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema en ejercicio de ficheros  (Leído 3,520 veces)
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
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.


En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Problema en ejercicio de ficheros
« Respuesta #1 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.


En línea

eleon

Desconectado Desconectado

Mensajes: 99


Ver Perfil
Re: Problema en ejercicio de ficheros
« Respuesta #2 en: 5 Febrero 2012, 00:18 am »

Para pausar hasta que le de a intro te basta con poner un "scanf()" al final del bucle.

Saludos.
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Problema en ejercicio de ficheros
« Respuesta #3 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...
En línea

eleon

Desconectado Desconectado

Mensajes: 99


Ver Perfil
Re: Problema en ejercicio de ficheros
« Respuesta #4 en: 5 Febrero 2012, 15:27 pm »

Con un contador. Si cada vez que se ejecuta el bucle se imprime una línea, debes llevar un contador que calcule el número de lineas impresas y al llegar a 25 con un condicional te pida presionar {ENTER}. Ejemplo:

Código
  1. short unsigned int contador = 0;
  2. while (condicion)
  3. {
  4. //Instrucciones para imprimir la línea
  5. contador += 1;
  6.  
  7. if (contador == 25)
  8. {
  9. scanf ("");
  10. contador = 0; //Lo reiniciamos para que vuelva a contar 25 líneas
  11. }

Y en esta parte:

Código
  1. do{
  2. gets(pausar);
  3. }
  4. while(strcmp(pausar,"")!=0);

No es correcto el uso de gets, es aconsejable cambiarlo por scanf. Si has declarado la cadena "pausar" con 2 elementos, el usuario puede perfectamente introducir "sidhashi {ENTER}" y gets lo recoge todo almacenándolo en zonas de memoria consecutivas y arriesgándote a que sobreescriba sobre otros datos en uso.

Saludos.
« Última modificación: 5 Febrero 2012, 15:30 pm por eleon » En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Problema en ejercicio de ficheros
« Respuesta #5 en: 5 Febrero 2012, 15:50 pm »

Muchísimas gracias.

Ya he entendido cómo se hace.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[ problema ] ejercicio 100
Ejercicios
_mÙëK§™_ 2 4,986 Último mensaje 1 Diciembre 2007, 01:31 am
por Iñaki Viggers
Ejercicio C manejo de ficheros
Programación C/C++
Gr1nD3r 3 4,760 Último mensaje 26 Julio 2010, 07:28 am
por do-while
un ejercicio de ficheros en c
Programación C/C++
Palante 3 2,490 Último mensaje 4 Junio 2017, 07:52 am
por MAFUS
EJERCICIO programacion en C. FICHEROS
Programación C/C++
Pinkfloyero 3 2,492 Último mensaje 2 Febrero 2018, 13:21 pm
por dijsktra
Ayuda con ejercicio de ficheros C
Programación C/C++
ByFuenteS 2 2,783 Último mensaje 16 Febrero 2018, 14:59 pm
por dijsktra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines