Tiago Viana 0 Posted April 6 Report Share Posted April 6 Boas! Tenho um codigo que fiz para q fosse feita a leitura de um ficheiro para um array de struct. No entanto dá erro a sua execução. typedef struct aluno{ int num; float nota1; float nota2; float notaP; }ALUNO; void colocarArray(ALUNO ficheiro[], int nAlunos){ int i=0; fp=fopen("alunos.txt","r"); if(fp==NULL) printf("\nErro!"); while(fscanf(fp, "\n%i;%f;%f;%f", ficheiro[i].num, ficheiro[i].nota1, ficheiro[i].nota2, ficheiro[i].notaP)!=EOF) i++; fclose(fp); } Link to post Share on other sites
rdolxd 9 Posted April 6 Report Share Posted April 6 Qual é o erro que te dá? segmentation fault? Link to post Share on other sites
Tiago Viana 0 Posted April 6 Author Report Share Posted April 6 (edited) Ao compilar no CLion não da qualquer tipo de erro, no entanto ao executar refere isto (a opção 2 ainda so está a executar a parte do codigo q coloquei acima). (https://imgur.com/a/jKTakgq) Obrigado Edited April 6 by Tiago Viana Link to post Share on other sites
thoga31 577 Posted April 7 Report Share Posted April 7 A função fscanf() devolve o número de elementos lidos correctamente. EOF é um caracter e seria utilizado, por exemplo, para comparar com o retorno de um fgetc(). Se queres ler 4 elementos de uma vez, então deverás verificar que, a cada iteração, foram lidos 4 elementos correctamente. Assim que falhar, deverás ter chegado ao fim do ficheiro ou a uma parte dele que não está devidamente formatada. Por outro lado, tal como no scanf(), tens de passar os endereços das variáveis. Neste caso, falta o operador &. Por fim, diria que a forma mais eficaz de desconsiderar os whitespaces é usar um espaço e não \n no início do formato lido pelo fscanf(). while(fscanf(fp, " %d;%f;%f;%f", &ficheiro[i].num, &ficheiro[i].nota1, &ficheiro[i].nota2, &ficheiro[i].notaP) == 4) i++; Cumprimentos. 1 Report Knowledge is free! Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now