C:如何在以下代码中获取结构中空格的字符串输入?

时间:2017-12-14 00:16:16

标签: c

我刚刚写完这些代码。它是一个数据结构,应该写在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);
} 

0 个答案:

没有答案