/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema con función fgets

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
capc11



Registrado: 23 Sep 2007
Mensajes: 1

MensajePublicado: 23/09/2007 4:59 pm
Título: Problema con función fgets

hola

tengo una duda con la función fgets en C al leer un archivo de texto plano, el archivo es el siguiente:

Objetos:
0 d6
1 d5
2 d4
3 d3
4 d2
5 d1

Atributos:
0 e
1 c
2 b
3 a
4 d

y el codigo es el siguiente:

char linea[128];
FILE *file_objetos_atributos;
file_objetos_atributos = fopen ("./procesamiento/objetos_atributos.tx","r");

while(fgets(linea, 128, file_objetos_atributos)!=NULL){
if (linea=="Objetos:'\0'"){
printf("linea:%s\n",linea);
}
}

el problema es que al realizar la comparación if (linea=="Objetos:'\0'") no encuentra nunca esa linea. creo que el problema es los caracteres que
la funcion fgets agrega.

toy trabajando un ubuntu 7.04 y gcc 4.1.2


muchas gracias
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 23/09/2007 7:37 pm
Título:

En C no puedes comparar dos cadenas directamente, en su lugar tienes que utilizar la funcion strcmp (prototipo en string.h) y verificar que el valor de retorno de esta funcion sea cero.

Aparte de eso la cadena que utilizas en la comparacion "Objetos:'\0'" no es la correcta ya que toda cadena literal delimitada por comillas dobles ya incluye el caracter '\0'. Tambien debes considerar que la funcion fgets no elimina de la cadena el caracter de fin de linea '\n'.

La comparacion deberia ser asi:
Código:
#include <string.h> /* prototipo de strcmp */

/* ... */

if (strcmp(linea, "Objetos:\n") == 0){
   printf("linea:%s\n",linea);
}


Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com