Título: problema con getc() Publicado por: m@o_614 en 26 Septiembre 2013, 20:19 pm Saludos
tengo el siguiente codigo que me tiene que leer un archivo de texto e imprimir cuantas veces aparece un caracter, para esto uso el fgetc para que vaya leyendo 1 por 1 pero no me imprime correctamente Código
de antemano gracias Título: Re: problema con getc() Publicado por: rir3760 en 27 Septiembre 2013, 03:05 am Problemas con el programa hay dos:
1) Cuando abres un archivo en modo texto no debes utilizar la función fseek para calcular su tamaño (numero de caracteres). En su lugar para procesar cada uno de los caracteres en el archivo puedes utilizar un bucle como este: Código
2) El valor de retorno de las funciones getchar, getc y fgetc es de tipo int. ---- El error que mencionas se genera en esta parte del programa: Código Revisa el fragmento con cuidado, lo solucionas en cuestión de minutos. Un saludo Título: Re: problema con getc() Publicado por: m@o_614 en 28 Septiembre 2013, 00:00 am rir3760, estas seguro que el getc() retorna un int??, es que leia en una pagina que me regresaba el caracter leido del fichero, bueno el punto es que eso ya funciona ya lo cale y si me imprime el numero de veces que aparece un caracter. Pero ahora cambie un poco el codigo, ahora cada vez que el getc me encuentre el caracter vacio ' ', me tiene que agarrar los siguientes 3 caracteres que le siguen al ' ', guardarlos en un arreglo e imprimirlos, el unico problema es que no me imprime el caracter vacio pero si me imprime los 3 caracteres que le siguen, como puedo corregir esto?
Código
de antemano gracias Título: Re: problema con getc() Publicado por: rir3760 en 29 Septiembre 2013, 03:12 am estas seguro que el getc() retorna un int? Si.es que leia en una pagina que me regresaba el caracter leido del fichero Cierto pero la función debe retornar el carácter leído (puede ser cualquiera) o bien EOF en caso de error o fin de archivo. Ese rango de valores (cualquier carácter mas EOF) es uno mas del que que se puede almacenar en una variable de tipo char, por eso las funciones getchar, getc y fgetc retornan un valor de tipo int.Si no tienes un referencia de calidad es hora de conseguir una, así puedes resolver dudas de este tipo en cuestión de minutos. el unico problema es que no me imprime el caracter vacio pero si me imprime los 3 caracteres que le siguen, como puedo corregir esto? Porque el espacio lo acabas de leer al utilizar fgetc, lo mas sencillo es regresar ese carácter al stream mediante la función ungetc antes de la llamada a fgets:Código Aparte de eso en el programa tienes un bucle que itera una solo vez, no es necesaria la conversión explicita en la llamada a malloc y no tiene caso utilizar "sizeof(char)" ya que este siempre es igual a uno. Un saludo |