(Consulta) Funcion FgetS en arreglo bidemensional

Iniciado por palacio29, 27 Agosto 2016, 04:22 AM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

Hola

Estoy recien empezando a ver archivos y queria saber como puedo copiar el contenido de un archivo de texto (.txt) en un arreglo bidemensional.
La idea seria que tengo un txt con varios nombres cargados

"Milan
Real Madrid
Ajax
Arsenal
Bayern Munich "

Y quiero pasar cada uno de los nombres a un arreglo de manera que si yo quiero imprimir el nombre "Milan", tendria que poner printf ("%s",arreglo[0]);

El codigo que hice hasta ahora es el siguiente.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char arreglo[5][20],fila=0,columna=0,aux;
    FILE* arch;
    arch=fopen("C:\\Users\\Usuario\\Desktop\\Equipos.txt","r");

    while (!feof(arch))
    {
        fgets(arreglo,20,arch);
       
    }


    fclose(arch);
    return 0;
}


El problema es que al intentar poner un printf para que muestre lo que hay en la posicion 0, no me sale nada o sale cualquier cosa, entonces basicamente no entiendo lo que hace la funcion fgets.
Entiendo que copia linea por linea, pero no se la manera de pasar esto a un arreglo ya que no me sale.

JavierScars

#1
   while (!feof(arch))
   {
       fgets(arreglo,20,arch);

   }


Que estas leyendo? acuérdate que "arreglo" es un array

Mejor
int i = 0;
   while (!feof(arch))
   {
       fgets(arreglo[i],20,arch);
       puts(arreglo[i++]);
   }


También te recomiendo que compruebes siempre que puedas que el archivo se esta abriendo satisfactoriamente, asi


arch = fopen("C:\\Users\\Usuario\\Desktop\\Equipos.txt","r");
if(!arch)
{
  //Mensaje de error x
     return 1;
}


Ademas de eso por cuestiones de prevención de errores te sugiero que nunca hagas los arrays del tamaño justo que vas a usar hazlos un poco mas grandes y simplemente no uses los sobrantes  ;-)
Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad,  y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.

AlbertoBSD

Hola todo bien con la respuesta de JavierScars

Solo me queda la duda del puts...
Segun yo solo deberia de ser:

    while (!feof(arch))
    {
        fgets(arreglo[i],20,arch);
        i++;
    }


palacio29 solo tienes que agregar el indice de la posicion del arreglo donde guardaras la entrada


Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW