Como ler ficheiros valores inteiros de um ficheiro em c?

Se te referes a ler numeros inteiros de um ficheiro, creio que vais ter que fazer à pata. Ler o ficheiro linha a linha, e analisar a string resultante e quando achares caracteres de algarismos tens de usar o atoi para devolver um int de uma string com o numero correspondente...
 
:)Boas,

Podes usar a fseek() para percorrer o ficheiro à caça dos inteiros, crias um vector para armazenas os inteiros à medida que os vais caçando, com recurso ao atoi, visto que provavelmente os vai estar a ler a partir de um ficheiro de texto, logo tens fazer um casting para inteiro. ve o seguinte exemplo.

Código:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
long int offset = 5L;
int inputchar;
/*Abres em modo de leitura*/
FILE *inputfile = fopen( "nomeFicheiro.txt", "r" );
 
/* Testas de teve sucesso ao abrir o ficheiro*/
if (inputfile == NULL) {
perror( "falhou ao abrir" );
exit(EXIT_FAILURE);
}
 
/*ve com o SEEK_SET se tas no inicio do ficheiro, senao deu barraca*/
if ( fseek( inputfile, offset, SEEK_SET ) != 0 ) {
perror( "fseek falhou" );
exit(EXIT_FAILURE);
}
 
/*Dou-te um exemplo para verificares se chegaste ao fim do ficheiro*/ 
inputchar = fgetc( inputfile );
// se chegaste ao fim do ficheiro (EOF = end of file)
if ( inputchar == EOF ) {
fprintf( stderr, "Fim do ficheiro encontrado no offset %ld\n", offset );
exit(EXIT_FAILURE);
}
 
/*Valor hexadecimal 0x%X*/
printf( "O caracter na posição %ld tem o valor 0x%X\n",
offset, (unsigned int) inputchar );
 
return 0;
}

O que podes facilmente fazer é criar uma função e em vez de veres se chegou ao fim do ficheiro, faer uma comparação, e se for inteiro retornas o valordentro do vector dos inteiros que falei, e fora colocas um ciclo que vai ver posição a posição cada caracter antes de chegar ao EOF, em cada volta incrementas uma posição dentro do ficheiro.

Já te dei uma ideia, agora vai ver a função fseek() e tenta implementar o que eu disse.

PS- obrigado ao HecKel pela code tag - mybad
 
Última edição:
Back
Topo