Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Leer Archivo de texto c y gtk+

Estas en el tema de Leer Archivo de texto c y gtk+ en el foro de C/C++ en Foros del Web. Buenas tengo el siguiente problema, estoy haciendo un programita en c y gtk+(GLADE) y en una parte tengo un campo de texto donde ingreso el ...
  #1 (permalink)  
Antiguo 01/05/2007, 23:55
Avatar de diegoag1  
Fecha de Ingreso: marzo-2004
Ubicación: El Pinar
Mensajes: 164
Antigüedad: 20 años, 7 meses
Puntos: 0
Leer Archivo de texto c y gtk+

Buenas tengo el siguiente problema, estoy haciendo un programita en c y gtk+(GLADE) y en una parte tengo un campo de texto donde ingreso el nombre del archivo apreto un boton y aparece el contenido, el problema es que solo me lee la ultima linea del archivo.

Código:
void
on_Abrir_boton_abrir_clicked           (GtkButton       *button,
                                        gpointer         user_data)
{
GtkWidget * nombre = lookup_widget(GTK_WIDGET(button), "Abrir_nombre");
GtkWidget * contenido = lookup_widget(GTK_WIDGET(button), "Abrir_contenedor");
GtkTextBuffer *buffer;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (contenido));
const gchar *a_nombre=gtk_entry_get_text(GTK_ENTRY(nombre));

FILE *abrir;
char *carpeta="C:/bla/bla/bla/";
char DIR[50];
sprintf(DIR,"%s%s",carpeta,a_nombre);
char texto[100];
abrir=fopen(DIR,"r");
while (feof(abrir)==0){
fgets(texto,100,abrir);
gtk_text_buffer_set_text(buffer,texto, -1);
}
fclose(abrir);
}
El tema es que con el mismo codigo para leer el archivo, en un proyecto de consola me lo lee bien.

Desde ya muchas gracias.

Saludos
  #2 (permalink)  
Antiguo 02/05/2007, 14:42
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Re: Leer Archivo de texto c y gtk+

El problema que tienes es simple.
Checa:

Cita:
while (feof(abrir)==0){
fgets(texto,100,abrir);
gtk_text_buffer_set_text(buffer,texto, -1);
}
-Creas un ciclo
-dentro del ciclo lees UNA LINEA de maximo 100 caracteres.
-Llenas el widget con esa linea que leiste

-Se repite el ciclo
-lees otra linea
-SUSTITUYES lo que estaba en el widget por la nueva linea

Al final te queda solo lo ultimo que leiste.

Recomendacion?
Dos.

La primera.
Puedes olvidarte del ciclo y leer todo de jalon y ponerlo en el widget.
Segunda.
Busca una funcion en la libreria gtk que en vez de escribir en seco la informacion al widget, añada informacion(en vez de borrarla).

yo votaria por la primera, pero eso depende de cada quien

usa fread en vez de fgets y quita el while.

Si quieres estar seguro de que lees todo el archivo de un jalon, entonces usa el fseek y el ftell para saber el tamaño del archivo en bytes y asi estar bien seguro de la cantidad de datos que vas a leer.

Saludos
  #3 (permalink)  
Antiguo 02/05/2007, 20:55
Avatar de diegoag1  
Fecha de Ingreso: marzo-2004
Ubicación: El Pinar
Mensajes: 164
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: Leer Archivo de texto c y gtk+

Y bue, otra vez instru al rescate, ya no se como agradecerte, lo unico que te puedo decir es MUCHAS GRACIAS!!!!

Saludos
  #4 (permalink)  
Antiguo 03/05/2007, 15:43
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Re: Leer Archivo de texto c y gtk+

Jejeje. de nada.
También, como hace tiempo me inicie con GTK y vi que no esta nada complicado, pues por eso te puedo ayudar.
Aunque esta vez tu problema fue mas de algoritmo que de GTK...

Saludos
  #5 (permalink)  
Antiguo 06/05/2007, 09:30
 
Fecha de Ingreso: mayo-2007
Mensajes: 2
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Leer Archivo de texto c y gtk+

Hola instru... soy nueva en esto de los foros... estoy haciendo un directorio telefonico usando gtk(glade) y lenguaje c.. realmente estoy apenas aprendiendo.

y he tenido unos cuantos problemitas con eso.. he logrado cargar el archivo pero solo mostrandolo en terminal, me gustaria hacer que apareciera en un gtkclist.. pero no se como... te agradeceria si pudieras ayudarme.
  #6 (permalink)  
Antiguo 06/05/2007, 10:07
 
Fecha de Ingreso: mayo-2007
Mensajes: 2
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Leer Archivo de texto c y gtk+

lo otro es que estoy tratando de leer el archivo para que por lo menos me muestre el contenido en consola pero me dice lo siguiente:

"passing argument 1 of ‘fopen’ from incompatible pointer type"

estoy haciendo lo siguiente:

void file_ok_sel (GtkWidget *w, GtkFileSelection *fs)
{
g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));

char linea[250], *ap;
FILE * archivo = fopen(fs,"r");
while (!feof(archivo))
{
fgets (linea,250, archivo);
ap = malloc(strlen(linea)+1);
strcpy(ap, linea);
puts (linea);
}
fclose (archivo);
}
no se si lo este haciendo bien.... pero en lenguaje C eso suele funcionar....
  #7 (permalink)  
Antiguo 06/05/2007, 17:12
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Re: Leer Archivo de texto c y gtk+

No soy en experto en Gtk(y menos en glade), pero cada vez que quiero usarlo, me voy a la API reference en www.gtk.org o en el tutorial que hay ahi mismo y ahi resuelvo mis dudas. Intentalo.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:55.