21/12/2006, 08:06
|
| | Fecha de Ingreso: diciembre-2006
Mensajes: 13
Antigüedad: 18 años, 1 mes Puntos: 1 | |
Re: Como leer un archivo de texto que no se la cantidad de datos? Bueno te muestro la forma en que lo hice, fijate que lo paso todo a un archivo auxiliar y despues recien ahí a la matriz. Tambien fijate lo que hago para que no muestre lo de la matriz cuando ya no pudo colocar datos en ella porque se termino el archivo (ah, crea los archivos necesarios :) )... (Por supuesto hay muchas más formas de hacerlo):
<--Modificado y reparado :) , gracias MaxExtreme-->
Código:
#include<stdio.h>
#define L 2
#define N 5 // filas
#define M 6 // columnas
void MostrarMatriz(char MATRIZ[N][M])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;(j<M)&&(MATRIZ[i][j]!='\0');j++)
{
printf("%c ",MATRIZ[i][j]);
}
if(MATRIZ[i][j]=='\0')
{
i=N;
j=M;
}
printf("\n");
}
}
void Pasar_ArchAux(FILE *archivotxt,FILE *archivoauxtxt, int *nro)
{
char LETRA[L];
archivotxt= fopen("DatosMatriz.txt","r");
archivoauxtxt=fopen("auxiliar.txt","w");
if((archivotxt==NULL)&&(archivoauxtxt==NULL))
printf("Error al acceder al archivo");
else
{
fgets(LETRA,L,archivotxt);
if(LETRA[0]=='\0')
{
while(!(feof(archivotxt)))
{
if(((LETRA[0]>='0')&&(LETRA[0]<='9')))
fprintf(archivoauxtxt,"%c",LETRA[0]);
printf("%s",LETRA);
fgets(LETRA,L,archivotxt);
}
}
else
(*nro)--;
}
fclose(archivotxt);
fclose(archivoauxtxt);
}
int main (void)
{
int posn=0,posm=0,archvacio=1;
char caracter, MATRIZ[N][M];
FILE *archivotxt=NULL, *archivoauxtxt=NULL;
archivoauxtxt=fopen("auxiliar.txt","r");
Pasar_ArchAux(archivotxt,archivoauxtxt,&archvacio);
printf("\n");
if((archivoauxtxt==NULL)||(archvacio==0))
printf("Error al acceder al archivo o archivo vacio\n");
else
{
caracter=fgetc(archivoauxtxt);
for(posn=0;(posn<N)&&(!feof(archivoauxtxt));posn++)
{
for(posm=0;(posm<M)&&(!feof(archivoauxtxt));posm++)
{
MATRIZ[posn][posm]=caracter;
caracter=fgetc(archivoauxtxt);
}
}
posn--;
if((posn<N)&&(posm<M))
MATRIZ[posn][posm]='\0';
else
{
posn++;
if(posn<N)
{
posm=0;
MATRIZ[posn][posm]='\0';
}
}
printf("Muestro la Matriz resultante:\n\n");
MostrarMatriz(MATRIZ);
}
fclose(archivoauxtxt);
return 0;
}
Última edición por Aprendiz-DAO; 21/12/2006 a las 10:46 |