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:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
if (argc < 2)
{
fputs("Error: se ha de pasar el archivo a leer como parámetro.",
stderr);
exit(EXIT_FAILURE);
}
char *nombre = argv[1], c;
FILE *fichero = fopen(nombre, "r");
int value = 0;
if (fichero == NULL)
{
fprintf(stderr, "Error al abrir el archivo %s:\n", nombre);
perror("Error");
exit(EXIT_FAILURE);
}
puts("Fichero abierto con éxito.");
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");
if (fclose(fichero) == EOF)
{
fprintf(stderr, "Error al cerrar el archivo %s:\n", nombre);
perror("Error");
exit(EXIT_FAILURE);
}
puts("Fichero cerrado con éxito.");
return 0;
}
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.wax9661qlsnnzg@lucas1