Ver Mensaje Individual
  #7 (permalink)  
Antiguo 01/03/2015, 08:47
aguml
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 9 meses
Puntos: 3
Respuesta: problema con funcion en C ejercicio de ficheros

Yo lo dejaría así:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //Prototipos de funciones
  5. int mayus ( FILE * file );
  6.  
  7. int main () {
  8.    FILE * arch;  // <- Aqui se crea el puntero. Evite crear globales el maximo pocible
  9.    int retval;
  10.    //Muy importante hacer la comprobacion para saber si existe el fichero o no. De no haber ninguno no hay nada que leer y se debe interrumpir aqui por lo sano.
  11.    arch = fopen ( "prueba.txt", "r" );
  12.    if ( !arch ){
  13.       printf("\n\nNo existe ningun archivo llamado prueba.txt\n\n");
  14.       retval = -1;
  15.    }else{
  16.       retval = mayus(arch);
  17.       //mayus devuelve un entero que es el numero de mayusculas. Ese printf puedes poner dentro de la misma funcion si quisieras.
  18.       printf ( "\n\ncantidad de mayusculas es:%d\n\n", retval ); //LLamamos a mayus pasando el archivo
  19.    }
  20.  
  21.    //Al final cierra el archivo
  22.    fclose ( arch );
  23.    //hacemos una pausa
  24.    system("PAUSE");
  25.    //retornamos cero que en nuestro caso quiere decir "todo correcto".
  26.    return retval;
  27. }
  28.  
  29. int mayus ( FILE * file ) {
  30.    int c;
  31.    int mayusculas = 0;
  32.  
  33.    //Hasta llegar al final del fichero...
  34.    while ( !feof ( file ) ) {
  35.       //...leerá letra por letra...
  36.       c = fgetc ( file );
  37.  
  38.       //...imprimiendo y contando solo las mayusculas.
  39.       if ( c >= 'A' && c <= 'Z' ) {
  40.          printf ( " %c", c );
  41.          mayusculas++;
  42.       }
  43.    }
  44.    return mayusculas;
  45. }