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,