记录:VS中字符串赋值操作的错误修正

最近学院的机甲考核任务开始发布了,在第一周的任务里面有这么一道题如图所示
在这里插入图片描述
在这个任务中,主要考核我们对结构体指针的使用,当然大概框架我也是写出来了,如图所示

#include"stdio.h"
#include"stdlib.h"
#include"string.h"

typedef struct Stu
{
	char name;
	int number;
	int Telephone;
	float score;
}stu;
void Imformation(stu* i)
{
	char s[] = "张三";
	strcpy(i->name,s);
	i->number = 30;
	i->Telephone = 10086;
	i->score = 90.0;
}


void main()
{
	stu a;
	Imformation(&a);
	printf("姓名:%s\n", a.name);
	printf("学号:%d\n", a.number);
	printf("手机号码:%d\n", a.Telephone);
	printf("分数:%f\n", a.score);
}

但是当我编译的时候出现了如图所示的错误
在这里插入图片描述
随后我根据提示吧strcpy改成strcpy_s,代码如下

#include"stdio.h"
#include"stdlib.h"
#include"string.h"

typedef struct Stu
{
	char name;
	int number;
	int Telephone;
	float score;
}stu;
void Imformation(stu* i)
{
	char s[] = "张三";
	strcpy_s(i->name,6,s);
	i->number = 30;
	i->Telephone = 10086;
	i->score = 90.0;
}


void main()
{
	stu a;
	Imformation(&a);
	printf("姓名:%s\n", a.name);
	printf("学号:%d\n", a.number);
	printf("手机号码:%d\n", a.Telephone);
	printf("分数:%f\n", a.score);
}


修改后出现了错误没有了,但是出现了一个异常,如图所示
在这里插入图片描述
这里出现的异常我以为是内存空间不够啥的,所以当时傻傻的给char name开辟了一个空间,但是发现还是会出现这个异常。找了很久都没有找到异常出处,于是我去求助了小夏师兄,最后发现是结构体中字符类型定义错误(手动吐血),因为我在结构体中定义的是char name ,只能对字符进行操作,然而我想要赋值的是“张三”这个字符串,最终代码如下:

#include"stdio.h"
#include"stdlib.h"
#include"string.h"

typedef struct Stu
{
	char name[5];
	int number;
	int Telephone;
	float score;
}stu;
void Imformation(stu* i)
{
	char s[] = "张三";
	strcpy_s(i->name,6,s);
	i->number = 30;
	i->Telephone = 10086;
	i->score = 90.0;
}


void main()
{
	stu a;
	Imformation(&a);
	printf("姓名:%s\n", a.name);
	printf("学号:%d\n", a.number);
	printf("手机号码:%d\n", a.Telephone);
	printf("分数:%f\n", a.score);
}


运行结果如图
在这里插入图片描述
本文转载至布尔博客
在这里插入图片描述

http://blog.bools.cn/archives/552

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值