[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Ultra OT]Sobre un programa en C



En Sat, 10 Mar 2012 12:59:44 +0100, Camaleón <noelamac@gmail.com> escribió:

El Sat, 10 Mar 2012 11:31:44 +0100, Lucas Sánchez Sagrado escribió:

Saludos lista, lo primero disculpas por enviar este pedazo de Off-topic,
pero es que ahora mismo no puedo preguntar en otro sitio y este problema
es de una cierta urgencia.
Resulta que para un curso de C que estoy haciendo tengo que hacer un
programa que "compruebe caracteres no válidos en los archivos de texto.
Los únicos caracteres válidos son los códigos ASCII 10, 13 y 32 ..
126.". El programa lo he podido hacer sin problemas, pero (ya me lo
temía) al leer un carácter no-ASCII (una ñ o una vocal con tilde, por
ejemplo), toma el siguiente también como no válido y me fastidia el
programa. He probado a poner combinaciones de break y continue en los if
anidados, pero eso está claro que no funciona. Si alguien pudiera
ayudarme se lo agradecería mucho.

Este es el programa:

(...)

   while ((c = getc(fichero)) != EOF)
     {
       if (c < 32 || c > 126)
	{
	  if (c != 10 && c != 13)
	    {
printf("Error: carácter no-ASCII detectado. Posición en el fichero: %ld.\n", ftell(fichero));
	  value = 1;
	 	}
		}
     }
   if (value == 0)
     printf("Todos los caracteres leídos eran correctos.\n");

Estás limitando la rutina a los 128 caracteres ascii, si quieres que admita
eñes y acentos tendrás que usar ascii extendido ¿no? :-?

Saludos,


El programa tiene que detectar esos caracteres del ASCII extendido y advertir sobre ellos, pero tiene que reconocerlos como ASCII normales, pero los toma como 2 caracteres (supongo que al ser multibyte), esa rutina creo que está bien así.

Saludos

--
Lucas.
Linux Registered User #546773
--
Por favor, no envíes adjuntos en formato Word:
http://www.gnu.org/philosophy/no-word-attachments.es.html


Reply to: