Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
struct studentdata{
int student_number;
char student_name[40];
int student_id;
char student_address[60];
int phone_number;
};
void main(){
FILE *p;
struct studentdata insert;
int edit_student;
int location;
struct studentdata change;
struct studentdata *edit;
edit = &change;
p = fopen("students.txt","a");
printf("Insert student\n\n ");
printf("Student Number: ");
scanf("%d", &insert.student_number);
printf("Student Name: ");
setbuf(stdin, NULL);
fgets(insert.student_name,40,stdin);
//scanf("%s", &insert.student_name);
printf("Student ID: ");
scanf("%d", &insert.student_id);
printf("Address: ");
setbuf(stdin, NULL);
fgets(insert.student_address,60,stdin);
//scanf("%s", &insert.student_address);
printf("Phone Number: ");
scanf("%d", &insert.phone_number);
printf("\tData saved sucessfully.\n");
fwrite(&insert, sizeof(struct studentdata), 1, p);
fclose(p);
p = fopen("students.txt","rb+");
while(fread(&change,sizeof(struct studentdata),1,p)){
printf("Student Number: %d\n", change.student_number);
//printf("Student Name: %s\n", change.student_name);
printf("Student Name: \n");
fputs(change.student_name,stdout);
setbuf(stdin, NULL);
printf("Student ID: %d\n", change.student_id);
//printf("Address: %s\n", change.student_address);
printf("Address: \n");
fputs(change.student_address,stdout);
setbuf(stdin, NULL);
printf("Phone Number: %d\n", change.phone_number);
if (feof(p))
break;
}
getch();
printf("Please input the student number you want to edit:");
scanf("%d",&edit_student);
fseek(p, 0, SEEK_SET);
system("cls");
while(fread(&change,sizeof(struct studentdata),1,p)){
if ( change.student_number == (edit_student) ){
location = ftell(p);
setbuf(stdin, NULL);
printf("Current student name: \n");
fputs(change.student_name,stdout);
setbuf(stdin, NULL);
printf("\New student name: ");
setbuf(stdin, NULL);
fgets(insert.student_name,40,stdin);
printf("Current Student ID: %d\n", change.student_id);
printf("\tNew Student ID: ");
scanf("%d", &edit->student_id);
printf(" Current Address: \n");
fputs(change.student_address,stdout);
setbuf(stdin, NULL);
printf("\tAddress / CP: ");
fputs(change.student_address,stdout);
setbuf(stdin, NULL);
printf("Current Phone Number: %d\n", change.phone_number);
printf("\tPhone Number: ");
scanf("%d", &edit->phone_number);
location = ftell(p);
fwrite(edit,sizeof(struct studentdata),1,p);
fclose(p);
break;
}
if (feof(p))
break;
}
}
On my first attempt i've input this data: