Yo lo dejaría así:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
//Prototipos de funciones
int mayus ( FILE * file );
int main () {
FILE * arch; // <- Aqui se crea el puntero. Evite crear globales el maximo pocible
int retval;
//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.
arch
= fopen ( "prueba.txt", "r" ); if ( !arch ){
printf("\n\nNo existe ningun archivo llamado prueba.txt\n\n"); retval = -1;
}else{
retval = mayus(arch);
//mayus devuelve un entero que es el numero de mayusculas. Ese printf puedes poner dentro de la misma funcion si quisieras.
printf ( "\n\ncantidad de mayusculas es:%d\n\n", retval
); //LLamamos a mayus pasando el archivo }
//Al final cierra el archivo
//hacemos una pausa
//retornamos cero que en nuestro caso quiere decir "todo correcto".
return retval;
}
int mayus ( FILE * file ) {
int c;
int mayusculas = 0;
//Hasta llegar al final del fichero...
while ( !feof ( file
) ) { //...leerá letra por letra...
//...imprimiendo y contando solo las mayusculas.
if ( c >= 'A' && c <= 'Z' ) {
mayusculas++;
}
}
return mayusculas;
}