Sorry for the language difference, thank you
In first I input data ( program to input data student , the teacher asked to use .txt )
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
void delete_n(char a[]){
size_t x=strlen(a);
if(a[strlen(a)-1]=='\n'){
a[strlen(a)-1]='\0';
}
}
struct age{
char id[10];
char name[50];
int numb;
int score;
};
void sx(age dnu[], int n){
age a;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(dnu[i].numb<dnu[j].numb){
a=dnu[i];
dnu[i]=dnu[j];
dnu[j]=a;
}
}
}
}
void file(age dnu[],int n){
FILE *f;
f = fopen("ex3","w");
if(f==NULL){
printf("Error");
exit(0);
}
fprintf(f,"%d\n",n);
for(int i=0;i<n;i++){
fprintf(f," %s\n",dnu[i].id);
fprintf(f,"%s\n",dnu[i].name);
fprintf(f," %d \n",dnu[i].numb);
fprintf(f," %d \n",dnu[i].score);
}
fclose(f);
}
void out(age dnu[],int n){
printf("%10s %20s %20s %20s","Ma nganh","Ten nganh","So sinh vien ","Diem trung tuyen\n");
for(int i=0;i<n;i++){
printf("%10s %20s %20d %20d",dnu[i].id,dnu[i].name,dnu[i].numb,dnu[i].score);
printf("\n");
}
}
int main(){
age *dnu;
int n;
printf("Nhap so nganh hoc can quan ly : ");
scanf("%d",&n);
dnu = (age*)malloc(n*sizeof(age));
for(int i=0;i<n;i++){
fflush(stdin);
printf("Nhap ma nganh hoc : ");
fgets(dnu[i].id,sizeof(dnu[i].id),stdin);
delete_n(dnu[i].id);
fflush(stdin);
printf("Nhap ten nganh hoc : ");
fgets(dnu[i].name,sizeof(dnu[i].name),stdin);
delete_n(dnu[i].name);
fflush(stdin);
printf("Nhap so sinh vien : ");
scanf("%d",&dnu[i].numb);
printf("Nhap diem trung tuyen : ");
scanf("%d",&dnu[i].score);
}
sx(dnu,n);
out(dnu,n);
file(dnu,n);
free(dnu);
}
Then second program , i want output data student , but loop for only run 1 time then error
i thinks , my mistakes is fscanf(f,"%d",....)
, I think fscanf is not a good choice ,
sorry again for the language difference ,
you don't have to pay attention to anything else , I just think the error is in the FILE section
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
struct age{
char id[10];
char name[50];
int numb;
int score;
};
int main(){
age dnu[20];
char x[50];
int d;
int n;
FILE *f;
f = fopen("ex3","r");
if(f==NULL){
printf("Error");
exit(0);
}
// if( fgets(x,60,f)!=NULL){
// puts(x);
// }
fscanf(f,"%d",&n);
for(int i=0;i<1;i++){
fscanf(f," %s ",&dnu[i].id);
fscanf(f," %s ",&dnu[i].name);
fscanf(f,"%d",&dnu[i].numb);
fscanf(f,"%d",&dnu[i].score);
}
printf("%10s %20s %20s %20s","Ma nganh","Ten nganh","So sinh vien ","Diem trung tuyen\n");
for(int i=0;i<n;i++){
printf("%10s %20s %20d %20d",dnu[i].id,dnu[i].name,dnu[i].numb,dnu[i].score);
printf("\n");
}
fclose(f);
}
you can see images enter image description here