defaultw 0 Denunciar post Postado Novembro 22, 2007 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
Kandrade 7 Denunciar post Postado Novembro 22, 2007 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
defaultw 0 Denunciar post Postado Novembro 22, 2007 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
eMineiro 0 Denunciar post Postado Novembro 22, 2007 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