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

Contar caracteres y digitos

Estas en el tema de Contar caracteres y digitos en el foro de C/C++ en Foros del Web. Necesito hacer un programa para contar cada tipo de caracter de un archivo de texto, al final me tiene que decir cuanto numero de cada ...
  #1 (permalink)  
Antiguo 23/06/2011, 17:13
 
Fecha de Ingreso: junio-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Contar caracteres y digitos

Necesito hacer un programa para contar cada tipo de caracter de un archivo de texto, al final me tiene que decir cuanto numero de cada tipo hay, el problema es que cuando un cuando leo un caracter del archivo me da error y no se como solucionarlo, ayuda D:

#include <iostream>
#include <ctype.h>
#include <stdio.h>
using namespace std;


int ma,mi,di,es,pun; // Mayusculas, Minusculas, Digistos, Espacios y Puntuacion, respectivamente.
char a;
int b;
bool n;
int main()
{
FILE *fichero;

fichero= fopen("testamento.txt", "r");

if (fichero == NULL) puts("Error al abrir el archivo");

{
while (!feof(fichero)) // Mientras no se llegue al final del archivo...
{

fscanf (fichero, "%s", a);


if (islower(a)) { mi++; }
if (isupper(a)) { ma++; }
if (isspace(a)) { es++; }
if (ispunct(a)) { pun++; }
if (isdigit(a)) { di++; }




}
}
fclose(fichero);
system("pause");
}
  #2 (permalink)  
Antiguo 23/06/2011, 20:27
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 13 años, 11 meses
Puntos: 228
Respuesta: Contar caracteres y digitos

Para leer caracteres con fcanf debes usar %c y no %s.

fscanf (fichero, "%c", a);

Con %s vas a estar esperando un puntero a char.
  #3 (permalink)  
Antiguo 24/06/2011, 08:20
 
Fecha de Ingreso: junio-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Contar caracteres y digitos

Tengo otra duda, estoy leyendo una linea con fgets, como hago para ir al final de la linea, estoy haciendo esto pero no me sale


c = fgets(linea, 300, fichero);

if (linea[i2] != EOF) { i2++; }

if (ispunct(linea[i2])) { s.pun++; }
  #4 (permalink)  
Antiguo 24/06/2011, 11:03
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Contar caracteres y digitos

EOF significa "End Of File" que es una constante que se devuelve cuando llegas al final del archivo; pero lo tu deseas es el final de la cadena; la cadena termina cuando encuentras '\0' (caracter de terminación).
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #5 (permalink)  
Antiguo 24/06/2011, 13:11
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 13 años, 11 meses
Puntos: 228
Respuesta: Contar caracteres y digitos

En este caso deberias buscar el final de linea el \n. Ya que fgets lees hasta un "\n" (nueva linea)

Etiquetas: caracteres, digitos
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 12:18.