Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

defaultw

Ler arquivo em C

Recommended Posts

Pessoal eu estou começando a escrever em C e estou com um problema.

Preciso ler um arquivo txt que contem um texto já pre-definido

 

O arquivo terá um numero exato de linhas e colunas como por exemplo:

 

TITULO

Linha1

Linha2

Linha3

Linha4

TITULO

Linha1

Linha2

Linha3

Linha4

 

Gostaria de ler esse arquivo.txt e jogar todo seu conteudo para uma Matriz tipo matriz[10][20]

 

para posteriormente exibir na tela.

O arquivo pode ser em somente leitura.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce sabe abrir o arquivo?

 

A idéia é simples:

 

- Leia uma linha do arquivo com

fgets(string, tamanho, arq)

 

string é um vetor de caracteres.

tamanho é o tamanho máximo dessa string.

arq é o ponteiro do arquivo.

 

Fazendo isso voce pode jogar o valor dentro da matriz através da função strcpy.

 

strcpy(matrz[0], string)

isso para a primeira posição.

 

Agora, imagine isso num loop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu comecei a escrever o codigo mas nao sei como fazer isso que você falou

 

 

 

void main(){

char matriz[10][20];

int x=0, y=0;

 

arquivo = fopen("arquivo.txt","r");

 

seria

fgets(matriz[x], 20, arquivo) ???????????????????

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamo ver se isso te ajuda:

 

#include <stdio.h>

#include <string.h>

#define TAM 100
//Primeiro se cria a estrura de uma matriz
//nc = numero de colunas
//nl = numero de linhas
typedef struct{

	   int nc,nl;

	   char mat[TAM][TAM];

}tMatStr;

//Agora o arquivo que le as palavras num arq texto e transforma em matriz
//Cada linha da matriz eh uma linha do arquivo
//Cada coluna de uma linha eh uma letra de uma linha do arquivo
tMatStr lerPalavrasArq(){

	   int i,j;

	   char str[TAM];

	   tMatStr m;

	   FILE *arq;

	   arq=fopen("palavras.txt","r");

	   i=0;
//Enquanto nao chegar no final de arq,faz:

	   while(!feof(arq)){

						 fscanf(arq,"%s",str); //Le  a linha e grava e em str

						 for(j=0;j<=strlen(str);j++){ //Copia-se  string str para a matriz

												m.mat[i][j] = str[j];

						 }

						 i++;

	   }

	   m.nc = strlen(str);
 //Numero de colunas eh igual ao tamanho da str --> estamos supondo aqui que seja uma matriz em que cada linha possui mesmo numero de colunas, caso contrario você nao precisa utilizar isso aqui nao.Esse m.nc eh facultativo , pois ha meios de saber o tamanho de linha atraves do strlen
	   m.nl = i; //Numero de linhas eh igual o valor de i

	   return m; //Retorna a matriz

}

Espero ter ajudado.

Observe também que ali no FOR em que copia a str para a linha da matriz você poderia usar [[[[[ strcpy(m.mat,str); ]]]]]]] igual o kadrena disse

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.