我刚刚写完这些代码。它是一个数据结构,应该写在FILE
中。我希望用户输入所有字符串,中间有空格。
我使用fgets()
,但fgets()
在读取文件时生成换行符。有办法吗?请解释是否发生任何缓冲区溢出。谢谢。
#include <stdio.h>
FILE *student_records;
struct studentdetails{
char name[20];
int age;
int class_room;
char section[10];
char fathername[20];
char mothername[20];
}totalstudentdetails;
struct studentmarks{
int physics;
int chemistry;
int maths;
int biology;
int english;
}totalstudentmarks;
int main()
{
student_records=fopen("studentrec.dat","a+");
printf("\n ADD STUDENT RECORDS \n\n\n");
printf(" Enter Student Name > ");
scanf("%s",totalstudentdetails.name);
printf(" Enter Student Age > ");
scanf("%d", &totalstudentdetails.age);
getchar();
printf(" Enter Student Class > ");
scanf("%d", &totalstudentdetails.class_room);
getchar();
printf(" Enter Student Section > ");
scanf("%s", totalstudentdetails.section);
printf("Enter Student Father's Name > ");
scanf("%s",totalstudentdetails.fathername);
getchar();
printf("Enter Student mother's Name > ");
scanf("%s",totalstudentdetails.mothername);
getchar();
fwrite(&totalstudentdetails, sizeof(totalstudentdetails), 1, student_records);
/* Student marks details */
printf("\n\n\n\n");
printf(" Marks Obtained(Out Of 100) \n\n");
printf(" Enter Mark In Physics > ");
scanf("%d", &totalstudentmarks.physics);
getchar();
printf(" Enter Mark In Chemistry > ");
scanf("%d", &totalstudentmarks.chemistry);
getchar();
printf(" Enter Mark In Maths > ");
scanf("%d", &totalstudentmarks.maths);
getchar();
printf(" Enter Mark In Biology > ");
scanf("%d", &totalstudentmarks.biology);
getchar();
printf(" Enter Mark In English > ");
scanf("%d", &totalstudentmarks.english);
getchar();
fwrite(&totalstudentmarks, sizeof(totalstudentmarks), 1, student_records);
/* closing file */
fclose(student_records);
}