Ir ao conteúdo
  • Cadastre-se

Leitura de Arquivos em C


andre.paris

Posts recomendados

Olá a todos,

Preciso de fazer um trabalho em C para armazenar alguns números que estão em um arquivo no formato .mtx. No entanto, meu problema é como fazer isso. Veja bem, no arquivo esses números encontram-se na seguinte disposição:

1 21 12

1 13 -1

1 50 1

1 60 -1

E assim por diante...

Tentei fazer com as funções fgetc, fgets e fscanf. Mas elas pegavam apenas o primeiro valor, no caso o 1, ou então a linha inteiro como um string, dependendo da função que usei. No caso da fgets, que pega toda linha, tentei usar a função atoi, fazendo numero = atoi(string[0]), uma vez que converteria primeiro o 1, dps eu faria isso para o 21 e ... Mas não é possível colocar indice dentro da atoi e eu teria o problema com numeros como 21 e numeros negativos, pois representam dois indices, além disso, o arquivo .mtx nem sempre contem o 1 como primeiro valor, podendo conter qql outro como 12, ou seja, eu poderia ter uma primeira linha como sendo 12 1 20, ou qql outra disposição.

Parece bem díficil, mas tem algo que não estou enxergando.

Agradeço a quem souber e puder postar ou me enviar a solução por e-mail.

Link para o comentário
Compartilhar em outros sites

você pode pegar uma linha inteira com fgets(), depois usá-la uma sscanf() que é como se fosse um scanf mas em uma string();

sscanf(str, "%d %d %d", &x, &y, &z);

ou usar o fscanf com múltiplos parametros: fscanf(fp, "%d %d %d", &x, &y, &z);

Eu fiz do fscanf também. Mas o que acontece é que ele está "pulando linhas" para capturar o que quero. Eu tenho um arquivo.mtx assim:

%cabeçalho

números

Eu fiz um fgets e um if desse modo:

while(!feof(matriz)){
fgets( le_arquivo , 10000 , matriz );
if( ler_arquivo[0] == '%')
printf("Eis aqui %\n");
else
{
fscanf(matriz, "%f %f %f" ,&linha, &coluna, &valor);
printf("%f %f %f and %s\n",linha,coluna,valor,le_arquivo);
}

}

No entanto, ao invés dele começar a imprimir os valores imediatamente abaixo da ultima linha com o %, ele está "doidão", começa a imprimir o valor dos numeros abaixo de outros e sem sequencia. Não entendo o porque.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!