Ir para conteúdo
Fórum Script Brasil
  • 0

Arquivos Para Vetores


Pitteri

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

beleza, faça deste jeito:

Se o arquivo arquivo.txt tem o seguinte conteúdo:

0 1 2

Faça:


/* Aqui vem as declaracoes e outras coisas */

int x = 0;

while( ! feof( USE_O_FILE* ) )
{

fscanf(USE_O_FILE*,"%d",vetor[x]);
x++;

}

/* Aqui o programa continua normalmente..*/

Pronto, a função fscanf() já faz todo o trabalho, ah, o USE_O_FILE* é para ser trocado pela variável do tipo FILE* que você declarou em seu programa.

Link para o comentário
Compartilhar em outros sites

  • 0

FibraOptica, e se no lugar de 0 1 2, do exemplo anterior, eu tiver strings? Como faço pra passá-las pra alguma váriável? Tenho que compará-las e ordenar alfabeticamente.

No meu programa coloquei cada string em uma linha do arquivo.

Aí você teria que usar a função fgets(), parecida com o gets() mas usada em streams!

Vamos supor que o arquivo string.txt tenha o conteúdo:

1 2 3

4 5 6

7 8 9

Para ler linha por linha, segue o código abaixo:

/* Aqui vem as declaracoes e outras coisas */

char do_arquivo[3] ; /* o arquivo tem 3 linhas */

int x = 0;

while( ! feof( USE_O_FILE* ) )

{

fgets( USE_O_FILE*, 10, do_arquivo[x] ) ;

x = x + 1 ;

}

/* Aqui o programa continua normalmente..*/

A função fgets() leu do arquivo USE_O_FILE* a primeira linha e armazenou em do_arquivo[0] , e assim foi até que feof() retornasse verdadeiro!

Ainda com dúvidas? Poste-a!

Link para o comentário
Compartilhar em outros sites

  • 0

/* Aqui vem as declaracoes e outras coisas */

char do_arquivo[3] ; /* o arquivo tem 3 linhas */

int x = 0;

while( ! feof( USE_O_FILE* ) )

{

fgets( USE_O_FILE*, 10, do_arquivo[x] ) ;

x = x + 1 ;

}

/* Aqui o programa continua normalmente..*/

Isso não vai funcionar primeiramente porque a ordem dos parâmetros da função fgets() está errada.

char *fgets( char *str, int num, FILE *stream );
Um outro problema é que você está tentando ler 10 caracteres para dentro de um char. Ao invés de
fgets( USE_O_FILE*, 10, do_arquivo[x] );
o certo seria
fgets(do_arquivo, sizeof(do_arquivo), ponteiro_para_o_arquivo);

Mesmo assim, o programa ainda estaria errado pois um vetor de 3 chars não é suficiente para armazenar as linhas do arquivo em questão.

Para concluir, o seu loop vai processar a última linha do arquivo duas vezes.

Link para o comentário
Compartilhar em outros sites

  • 0

Isso não vai funcionar primeiramente porque a ordem dos parâmetros da função fgets() está errada.

Isso aí fera, eu voltei para concertar mas você já fez o trabalho smile.gif

Mesmo assim, o programa ainda estaria errado pois um vetor de 3 chars não é suficiente para armazenar as linhas do arquivo em questão.

O certo é que eu ia colocar um ponteiro para cada linha!

do_arquivo[0] = Aponta para Linha 1

do_arquivo[1] = Aponta para Linha 2

do_arquivo[2] = Aponta para Linha 3

Mas já que você corrigiu os erros, tudo beleza!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...