Dev - C++ - Leer archivos conteniendo acento

 
Vista:
sin imagen de perfil

Leer archivos conteniendo acento

Publicado por Rob (2 intervenciones) el 22/09/2015 19:57:39
Hola:

Tengo un problema con el siguiente código que trata de leer un archivo de texto pero las palabras tienen acento.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char	str[22];
FILE	*fp;
 
int main()
{
     fp = fopen("test.txt", "r");
     fgets(str, 20, fp);
     if( strcmp(str,"Primer día") == 0 ) printf("Palabra encontrada\n");
     fclose(fp);
     return 0;
}

el comparador strcmp no funciona porque la palabra es acentuada

¿Cómo resolver el problema?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Leer archivos conteniendo acento

Publicado por aguml (522 intervenciones) el 22/09/2015 23:39:53
No deberías tener problemas. Asegúrate que el archivo de texto fue guardado como Ansi y no como Unicode ya que eso si que haría que fallase porque en Unicode un carácter ocupa 2 bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Leer archivos conteniendo acento

Publicado por Hector (45 intervenciones) el 23/09/2015 19:37:50
Lo probé creando un documento de texto "test.txt", y escribí "Primer día" en el, si funciona, seguramente tiene un espacio de mas en el texto, "Primer día" no es lo mismo que "Primer día " ya que hay un carácter mas en el documento, strcmp te devuelve un resultado exitoso si ambas cadenas son exactamente idénticas.

Puedes usar strstr, esta función te devolverá un puntero de la primera ocurrencia de caracteres especificados, NULL en caso de no funcionar.

1
2
3
4
if( strstr(str,"Primer día") != NULL )
      printf("Palabra encontrada\n");
else
      printf("No se pudo conseguir la palabra\n");

http://www.cplusplus.com/reference/cstring/strstr/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Leer archivos conteniendo acento

Publicado por Aguml (522 intervenciones) el 24/09/2015 01:25:09
Ok, fgets cojerá los caracteres indicados a no ser que se acabe el archivo antes o que se encuentre un salto de línea. Si se encuentra un salto de línea la cadena será cerrada con el carácter de salto de línea con lo que no es lo mismo "Hola mundo" que "Hola mundo\n". Yo buscaría ese salto de línea y lo cambiaría por un carácter de fin de cadena y seguro que se soluciona. Con EOF haría lo mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar