1、定义一个结构体Object,包括用户id及name信息。实现让用户在控制台输入id和name,并打印显示出结果(知识点:结构体的定义,结构体数组访问成员变量的方法)
示例:
输入ID: 1235
输入名字: hello
result: ID: 1235, 名字: hello
#include<stdio.h>
#include<string.h>
struct Object
{
int id;
char name[32];
};
int main()
{
Object obj;
printf("please input ID:");
scanf_s("%d", &obj.id,sizeof(obj.id));//在使用scanf_s是要指定边界值
printf("please input Name:");
scanf_s("%s", &obj.name,sizeof(obj.name));
printf("result:ID: %d,name:%s \n", obj.id, obj.name);
return 0;
}
2、定义一个结构体类型,表示银行账户信息: 每个帐户包含账号,用户身份证号码,用户姓名,用户地址,账户金额。 然后,从控制台输入各个字段的值,保存到结构体变量中。
#include<stdio.h>
#include<string.h>
struct User
{
int id;
int card;
char name[32];
char address[128];
int money;
};
int main()
{
User obj;
printf("please input id:");
scanf_s("%d",&obj.id,sizeof(obj.id));
printf("please input card:");
scanf_s("%d", &obj.card, sizeof(obj.card));
printf("please input name:");
scanf_s("%s", &obj.name, sizeof(obj.name));
printf("please input adress:");
scanf_s("%s", &obj.address, sizeof(obj.address));
printf("please input money:");
scanf_s("%d", &obj.money, sizeof(obj.money));
printf("id:%d\n card:%d\n name:%s\n address:%s\n money:%d\n",
obj.id, obj.card, obj.name, obj.address, obj.money);
return 0;
}
但scanf_s对输入有要求,比如遇到空格就自动结束,不能允许输入存在空格。
所以另外一种方法是使用get_s函数(需要加入#include<string.h>
)实现读取用户的输入。
但gets_s函数只能读取字符串,对于数字型输入要进行转换,使用atoi函数(需要加入#include<stdlib.h>
)实现字符串转换为整数。
代码另一版本:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Account
{
unsigned int id;
char citizen_id[19];
char name[32];
char address[128];
unsigned int balance; // 余额
};
// -1, 表示输入有误。0,表示输入正确
int input(Account* acc)
{
char buf[128];
// 输入ID
printf("ID: ");
gets_s(buf);
acc->id = atoi(buf); //a to i