Estou desenvolvendo um programa que deve ler um arquivo .txt e ARMAZENAR o conteúdo de cada linha num campo de vetor.
O código é o seguinte:
main()
{
FILE *fp;
char nome_lista_genes[50];
char *nome_gene[5];
char gene[10];
char *temp[10];
int a=0;
int l;
/*Rotina comum que verifica se o arquivo foi aberto*/
printf("\nDigite o nome do arquivo correspondente à lista de genes:\n");
scanf("%s", &nome_lista_genes);
if (( fp = fopen(nome_lista_genes, "r")) == NULL)
{
printf("\nNão foi possível abrir o arquivo! Verifique se o nome fornecido está correto.\n");
exit(1);
}
do
{
a++;
nome_gene[a]=fgets(gene,50,fp); /*cada campo do vetor recebe o conteudo de uma linha*/
printf("%s\n", nome_gene[a]);
}while(!feof(fp));
printf("\nO número de genes nesta lista é de: %d\n", a-1);
------> Até aqui tudo bem! Durante a execução, cada linha do arquivo é impressa na tela. No caso de existirem apenas 3 genes na lista:
gene A
gene B
gene C
(null)
Continuando o código:
for(l=1;l<=a;l++)
{
printf("%s\n", nome_gene[l]); /*peço para imprimir novamente, só que considerando apenas o vetor*/
}
---------> O resultado jogado na tela é:
gene C
gene C
gene C
(null)
Ou seja, este vetor não ARMAZENA realmente o registro de cada uma das linhas, apenas o do último loop. E eu preciso de cada um dos registros para serem manipulados mais tarde.
Se alguém puder me dar uma dica, agradeço muito!!!
Pergunta
Guest --Guilherme --
Olá pessoal,
Preciso muito da ajuda de vocês.
Estou desenvolvendo um programa que deve ler um arquivo .txt e ARMAZENAR o conteúdo de cada linha num campo de vetor.
O código é o seguinte:
main()
{
FILE *fp;
char nome_lista_genes[50];
char *nome_gene[5];
char gene[10];
char *temp[10];
int a=0;
int l;
/*Rotina comum que verifica se o arquivo foi aberto*/
printf("\nDigite o nome do arquivo correspondente à lista de genes:\n");
scanf("%s", &nome_lista_genes);
if (( fp = fopen(nome_lista_genes, "r")) == NULL)
{
printf("\nNão foi possível abrir o arquivo! Verifique se o nome fornecido está correto.\n");
exit(1);
}
do
{
a++;
nome_gene[a]=fgets(gene,50,fp); /*cada campo do vetor recebe o conteudo de uma linha*/
printf("%s\n", nome_gene[a]);
}while(!feof(fp));
printf("\nO número de genes nesta lista é de: %d\n", a-1);
------> Até aqui tudo bem! Durante a execução, cada linha do arquivo é impressa na tela. No caso de existirem apenas 3 genes na lista:
gene A
gene B
gene C
(null)
Continuando o código:
for(l=1;l<=a;l++)
{
printf("%s\n", nome_gene[l]); /*peço para imprimir novamente, só que considerando apenas o vetor*/
}
---------> O resultado jogado na tela é:
gene C
gene C
gene C
(null)
Ou seja, este vetor não ARMAZENA realmente o registro de cada uma das linhas, apenas o do último loop. E eu preciso de cada um dos registros para serem manipulados mais tarde.
Se alguém puder me dar uma dica, agradeço muito!!!
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.