print an int array in a file in C -
i need write file(not binary) students , each ones grades(int note[10] under form). not errors when try write file last grade printed, , don't know how print entire list. example (int nr_note means how many grades student have) if students grades 6, 8, 9 prints 9. thank in advance.
#include <stdio.h> #include <stdlib.h> struct student{ int nr_matricol; char nume[10]; int nr_note; int note[10]; }; void citire_date(struct student *studenti, int n, file *f){ int i, j; for(i=0;i<n;i++){ printf("studentul %d\n", i+1); printf("numarul matricol: "); scanf("%d", &(studenti+i)->nr_matricol); printf("numele studentului: "); fflush(stdin); gets((studenti+i)->nume); printf("numarul de note: "); scanf("%d", &(studenti+i)->nr_note); for(j=0;j<((studenti+i)->nr_note);j++){ printf("nota %d: ", j+1); scanf("%d", &(studenti+i)->note[i]); } fprintf(f, "numar matricol: %d\nnume: %s\nnote: %d \n", ((studenti+i)->nr_matricol) ,((studenti+i)->nume), ((studenti+i)->note[i])); } } int main() { struct student studenti[20]; file *f; int n; f = fopen("studenti.txt", "w"); if(f==null){ printf("nu s-a putut deschide/crea fisierul pentru scriere."); exit(1); } printf("introduceti numarul de studenti: "); scanf("%d", &n); citire_date(studenti, n, f); fclose(f); return 0; }
change citire_date() function :
void citire_date(struct student *studenti, int n, file *f){ int i, j; for(i=0;i<n;i++){ printf("studentul %d\n", i+1); printf("numarul matricol: "); scanf("%d", &(studenti+i)->nr_matricol); printf("numele studentului: "); fflush(stdin); gets((studenti+i)->nume); printf("numarul de note: "); scanf("%d", &(studenti+i)->nr_note); for(j=0;j<((studenti+i)->nr_note);j++){ printf("nota %d: ", j+1); scanf("%d", &(studenti+i)->note[j]); } fprintf(f, "numar matricol: %d\nnume: %s\n", ((studenti+i)->nr_matricol) ,((studenti+i)->nume) ); // printing notes for(j=0;j<((studenti+i)->nr_note);j++){ fprintf(f, "note: %d = %d \n", j+1, ((studenti+i)->note[j])); } } }
you need use loop print notes.
Comments
Post a Comment