14.18.4 嵌套结构数组

创建一个内含3个嵌套结构类型的数组,按要求输入并输出打印

#include<stdio.h>
#include<string.h>
#define SIZE 20
struct name {
    char lname[SIZE];
    char mname[SIZE];
    char fname[SIZE];
};
struct person {
    int num;
    struct name handle;
};

struct person getinfo(void);
char *s_gets(char *st, int n);
void show(struct person temp);

int main()
{
    struct person arrary[3];
    for (int i = 0; i < 3; i++) 
    {
        arrary[i] = getinfo();
    }
    for (int i = 0; i < 3; i++)
    {
        show(arrary[i]);
    }

    return 0;
}

struct person getinfo(void)
{
    struct person temp;
    printf("please enter your num:\n");
    scanf("%d", &temp.num);
    while (getchar() != '\n') //吃掉换行符
        continue;
    printf("please enter your last name :\n");
    s_gets(temp.handle.lname, SIZE);
    printf("please enter your midname:\n");
    s_gets(temp.handle.mname, SIZE);
    printf("please enter your first name:\n");
    s_gets(temp.handle.fname, SIZE);
    printf("OK!\n\n");

    return temp;
}

void show(struct person temp)
{
    if (strlen(temp.handle.mname))
    {
        printf("%s, %c. %s -- %d\n", temp.handle.lname, temp.handle.mname[0], temp.handle.fname, temp.num);
    }
    else
    {
        printf("%s, %s -- %d\n", temp.handle.lname, temp.handle.fname, temp.num);
    }
}
char *s_gets(char *st, int n)
{
    char * ret_val;
    char * find;

    ret_val = fgets(st, n, stdin);
    if (ret_val)
    {
        find = strchr(st, '\n');
        if (find)
            *find = '\0';
        else
            while (getchar() != '\n')
                continue;
    }
    return ret_val;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容