En Sat, 10 Mar 2012 12:59:44 +0100, Camaleón <noela...@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


--
To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/op.wayesviblsnnzg@lucas1

Responder a