Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con un fichero

Estas en el tema de Problemas con un fichero en el foro de C/C++ en Foros del Web. ¿Alguien sabria indicarme porque el siguiente programa no llega nunca a la línea fclose(f); ? Gracias de antemano! #include "header.h" int comptar_paraules(char *nom_fitxer){ // Obrir ...
  #1 (permalink)  
Antiguo 03/05/2015, 08:27
 
Fecha de Ingreso: mayo-2015
Mensajes: 1
Antigüedad: 8 años, 11 meses
Puntos: 0
Pregunta Problemas con un fichero

¿Alguien sabria indicarme porque el siguiente programa no llega nunca a la línea fclose(f); ? Gracias de antemano!

#include "header.h"

int comptar_paraules(char *nom_fitxer){
// Obrir el fitxer
FILE *f;
f = fopen("ca.txt","r");
if (f == NULL)
error(NO_FITXER,-1,nom_fitxer);

char posicio; //Contindrà el caràcter que s'acaba de llegir
posicio = fgetc(f); //Posicio = la primera lletra del document de text
int i=0; //conté el nombre de paraules
while(posicio!=EOF)
{
if(posicio=='\n') //compta el nombre de vegades que hi ha un salt de línia, que és equivalent al nombre de paraules que hi ha
i++;
posicio = getc(f);
}
fclose(f);// Tanca el fitxer
return (i);
}
  #2 (permalink)  
Antiguo 03/05/2015, 11:41
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Problemas con un fichero

Si funciona, aun que he tenido que maquiarlo un poco >_<. Lo que hace es contar los \n, supongo que para saber cuantas lineas hay en el fichero.
Código C++:
Ver original
  1. #include<iostream>
  2. #include <cstdio>
  3. using std::cout;
  4. using std::cin;
  5. using std::endl;
  6.  
  7. int comptar_paraules ( char *nom_fitxer ) {
  8.     FILE *f;
  9.     f = fopen ( nom_fitxer, "r" );
  10.     if ( f == 0 ) {
  11.         printf ( "No se puede abrir!" );
  12.         return -1;
  13.     }
  14.  
  15.     char posicio;
  16.     posicio = fgetc ( f );
  17.     int i = 0;
  18.     while ( posicio != EOF ) {
  19.         if ( posicio == '\n' )
  20.             i++;
  21.         posicio = getc ( f );
  22.     }
  23.     fclose ( f );
  24.     return ( i );
  25. }
  26.  
  27. int main() {
  28.     cout << comptar_paraules ( "prueba.txt" );
  29.  
  30.     return 0;
  31. }

Etiquetas: char, fichero, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:45.