简体   繁体   English

打印 c 中的结构体值

[英]Print the structure values in c

I wrote a small program in c programming language.我用c编程语言写了一个小程序。 The program just get students data and save them in the struct fields.该程序只是获取学生数据并将它们保存在结构字段中。 After that I was hoping to print the data but it seems that the code is not working properly.之后我希望打印数据,但似乎代码无法正常工作。

I wrote that in the visual studio 17 ide.我在视觉工作室 17 ide 中写道。

#include <stdio.h>
#include <string.h>

struct Students
{
    char Student_ID[12];
    char Student_FirstName[20];
    char Student_LastName[20];
    char Student_StudyField[32];
    int Student_Level;
};

int main()
{
    struct Students STU1;

    printf("Student ID: ");
    scanf_s("%11s", STU1.Student_ID, sizeof(STU1.Student_ID));
    printf("Student first name: ");
    fgets(STU1.Student_FirstName, sizeof(STU1.Student_FirstName), stdin);
    printf("Student last name: ");
    fgets(STU1.Student_LastName, sizeof(STU1.Student_LastName), stdin);
    printf("Student study field: ");
    fgets(STU1.Student_StudyField, sizeof(STU1.Student_StudyField), stdin);
    printf("Student level: ");
    scanf_s("%2d", STU1.Student_Level, sizeof(STU1.Student_Level));

    printf("\n");
    printf("Student ID: %s\n", STU1.Student_ID);
    printf("Student first name: %s\n", STU1.Student_FirstName);
    printf("Student last name: %s\n", STU1.Student_LastName);
    printf("Student study field: %s\n", STU1.Student_StudyField);
    printf("Student level: %d\n", STU1.Student_Level);

    return 0;
}

Output: Output:

Student ID: 12345678900
Student first name: Tom
Student last name:
Student ID: 12345678900
Student first name: Tom
Student last name:

Temporary buffer + gets + sscanf should work临时缓冲区 + 获取 + sscanf 应该可以工作

char buff[256] ;
STU1.Student_Level = 0 ;     // Or other default
if ( fgets(buff, sizeof(buff), stdin) ) {
    int v ;
    if ( sscanf(buff, "%d", &v) == 1 ) {
        STU1.Student_Level = v ;
    } ;
} ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM