elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Consulta) Funcion FgetS en arreglo bidemensional
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Funcion FgetS en arreglo bidemensional  (Leído 2,044 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
(Consulta) Funcion FgetS en arreglo bidemensional
« en: 27 Agosto 2016, 04:22 am »

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.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    char arreglo[5][20],fila=0,columna=0,aux;
  7.    FILE* arch;
  8.    arch=fopen("C:\\Users\\Usuario\\Desktop\\Equipos.txt","r");
  9.  
  10.    while (!feof(arch))
  11.    {
  12.        fgets(arreglo,20,arch);
  13.  
  14.    }
  15.  
  16.  
  17.    fclose(arch);
  18.    return 0;
  19. }
  20.  

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.


En línea

JavierScars

Desconectado Desconectado

Mensajes: 116



Ver Perfil
Re: (Consulta) Funcion FgetS en arreglo bidemensional
« Respuesta #1 en: 28 Agosto 2016, 23:32 pm »

Código:
    while (!feof(arch))
    {
        fgets(arreglo,20,arch);
 
    }

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

Mejor
Código:
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

Código:
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  ;-)


« Última modificación: 28 Agosto 2016, 23:50 pm por JavierScars » En línea

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
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: (Consulta) Funcion FgetS en arreglo bidemensional
« Respuesta #2 en: 29 Agosto 2016, 14:09 pm »

Hola todo bien con la respuesta de JavierScars

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

Código
  1.    while (!feof(arch))
  2.    {
  3.        fgets(arreglo[i],20,arch);
  4.        i++;
  5.    }

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


Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines