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

Re: [Ultra OT]Sobre un programa en C



El día 10 de marzo de 2012 13:11, Lucas Sánchez Sagrado
<Rated.DS@aol.com> escribió:
> 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
>
>
> --
> To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact
> listmaster@lists.debian.org
> Archive: [🔎] op.wayesviblsnnzg@lucas1">http://lists.debian.org/[🔎] op.wayesviblsnnzg@lucas1
>

Mira a ver como está codificado tu fichero: file fichero.txt
Mira también la función getwc()

S2


Reply to: