Usuario: anónimo

Usuarios en línea: 1
Invitados: 1

FAQ

Mensaje

4m
Re: Guardar cada línea en arrays independientes
U(LauraC) 2018-03-01 14:02:41  H

Buenos días y muchas gracias por la respuesta!

Agregué al código la parte en azul, pero el programa ya no ejecuta y en

cambio me arroja el siguiente error:

"C:\Users\usuario\Desktop\collect2.exe [Error]

ld returned 1 exit status" . No estoy segura si esto tiene que ver con el

hecho de que las filas del txt no tienen la misma longitud, es decir

mientras una linea contiene 4 datos, la siguiente almacena 14. Yo había

hecho ya una prueba agregando 0 manualmente para completar las filas y

darles igual tamaño y funcionó bastante bien, pero será muy engorroso al

aplicar el programa en archivos de mayor contenido.

Si dado el caso debo agregar ceros para completar las líneas de menor

tamaño, me podrías indicar de qué manera encontrar la línea de mayor tamaño

y su longitud?.

Aquí dejo el código modificado.

#include <stdio.h>

int main()

{

   int i;

   char nombre[10]="datos.dat", linea[81];

   FILE *fichero;

   fichero = fopen( "C:\\Prueba\\guia(1).txt","r");

   printf( "Fichero: %s ->  ", nombre );

   if( fichero )

      printf( "existe (ABIERTO)\n" );

   else

   {

      printf( "Error (NO ABIERTO)\n" );

      return 1;

   }

printf( "La primera linea del fichero: %s\n\n", nombre );

    printf( "%s\n", fgets(linea, 81, fichero) );

printf( "DATOS DE LOS PEDIDOS \n\n");

for (i = 0; i< 20; i++)

{

printf( "%s\n", fgets(linea, 81, fichero) );

}

fseek(fichero,0L,SEEK_CUR);

   char lineas[20][81];

for( i = 0; i< 20; i++ )

{

  fgets( lineas[i], 81, fichero );

}

printf("que pedido busca? ");

int pedidoBuscado;

pedidoBuscado= i+1;

scandf("%i",&pedidoBuscado);

printf("el pedido uno contiene: %s", linea[pedidoBuscado]);

   if( !fclose(fichero) )

      printf( "\nFichero cerrado\n" );

   else

   {

      printf( "\nError: fichero NO CERRADO\n" );

      return 1;

   }

      return 0;

}

Saludos!

El 28 de febrero de 2018, 9:32, Davidson, Steven <srd4121@njit.edu>

escribió:

>  Hola Laura,

>

>  Vas por buen camino. Como has mencionado, necesitas varios arrays

>  diferentes. Por lo tanto, tienes que definir un array de arrays de 'char'.

>  Por ejemplo,

>

>  char lineas[20][81];

>  ...

>  for( i = 0; i< 20; i++ )

>  {

>    fgets( lineas[i], 81, fichero );

>  }

>

>  Una vez que tengas cada línea cargada, puedes acceder a cada una mediante

>  el primer índice de 'lineas'.

>

>

>  Espero que esto te ayude.

>

>  Steven

>

>

>  2018-02-28 8:38 GMT-05:00 LAURA PATRICIA CARRANZA MURILLO <

> laura.carranza@unibague.edu.co> :

>

>>  Buenos días,

>>

>>  Estoy empezando a programar y por lo tanto son pocas las funciones que

>>  conozco. Debo hacer un programa que lea un archivo txt y almacene la

>>  información de cada linea de tal manera que pueda utilizarla después para

>>  hacer operaciones.

>>

>>

>>  Incialmente pensé en ingresar la información linea por línea en un

>>  arrrays diferentes para luego poder llamarlos, pero no lo he logrado. Hasta

>>  el momento solo se como mostrar la información del archivo y no se como

>>  llamar cada linea sin que aparezca la línea anterior.

>>

>>

>>  Agradecería cualquier ayuda o tip que pudieran darme.

>>

>>  Este es el código que tengo hasta ahora:

>>

>>

>>

>>     1. #include <stdio.h>

>>     2.

>>     3. int main()

>>     4. {

>>     5. int i;

>>     6. char nombre[10]="datos.dat", linea[81];

>>     7. FILE <http://www.php.net/file> *fichero;

>>     8. fichero = fopen <http://www.php.net/fopen>( "C:\\Prueba\\

>>     guia(1).txt","r");

>>    9. printf <http://www.php.net/printf> ( "Fichero: %s -> ", nombre );

>>     10. if( fichero )

>>     11. printf <http://www.php.net/printf>( "existe (ABIERTO)\n" );

>>     12.

>>     13. else

>>     14. {

>>     15. printf <http://www.php.net/printf>( "Error (NO ABIERTO)\n" );

>>     16. return 1;

>>     17. }

>>     18.

>>     19. printf <http://www.php.net/printf>( "La primera linea del

>>     fichero: %s\n\n", nombre );

>>     20. printf <http://www.php.net/printf>( "%s\n", fgets

>>     <http://www.php.net/fgets>(linea, 81, fichero) );

>>     21.

>>     22. printf <http://www.php.net/printf>( "DATOS DE LOS PEDIDOS \n\n");

>>     23. for (i = 0; i< 20; i++)

>>     24. {

>>     25. printf <http://www.php.net/printf>( "%s\n", fgets

>>     <http://www.php.net/fgets>(linea, 81, fichero) );

>>     26. }

>>     27.

>>     28. if( !fclose <http://www.php.net/fclose>(fichero) )

>>     29. printf <http://www.php.net/printf>( "\nFichero cerrado\n" );

>>     30. else

>>     31. {

>>     32. printf <http://www.php.net/printf>( "\nError: fichero NO CERRADO\n

>>     " );

>>     33. return 1;

>>     34. }

>>     35.

>>     36. return 0;

>>     37. }

>>

>>

>>

>>  Saludos y muchas gracias por su atención

>>

>>  --

>>  *Laura Carranza *

>>

>>

>  _______________________________________________

>  Lista de correo Cconclase Cconclase@listas.conclase.net

>  http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net

>  Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

>

--

*Ing. Laura Patricia Carranza Murillo*

*Joven Investigadora*

*Grupo GINNOVA*

*cel. 3178954468*

_______________________________________________

Lista de correo Cconclase Cconclase@listas.conclase.net

http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net

Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ