gpt4 book ai didi

c - 结构不安全警告

转载 作者:行者123 更新时间:2023-11-30 18:35:09 27 4
gpt4 key购买 nike

我正在尝试使用结构来制作某种包含学生姓名、编号等的列表。当我尝试构建解决方案并查看是否有错误时,我的问题是,编译器(Visual Studio 2013)告诉我使用“strcpy_s”而不是“strcpy”。当我这次修复它时,我收到与字符串大小相关的错误。我到底做错了什么?

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

struct student
{
char name[20];
char surname[20];
char dep[50];
int Class;
int num;
}stud;

main(void){
strcpy(stud.name, "goktug");
strcpy(stud.surname, "saray");
strcpy(stud.dep, "elektrik");

}

最佳答案

由于缓冲区溢出问题,安全不安全问题随之而来。 strcpy 不知道目标字符保存能力。这就是为什么它不安全。

更安全的是strcpy_s(stud.name, 20, "goktug");。在这里,我们指定无论什么,我们都应该限制在 20 个以内,因为目标能够容纳 20 个字符,包括 NUL 终止字符。

有人可能会争辩说,这里的数据被截断,这并不比目的地太小而无法容纳复制内容的明确消息更好,但肯定比缓冲区溢出漏洞更好。如果我们沿着这条线思考,我们可以得出这样的结论:除非我们确定目的地可以保存复制的字符串,否则我们不应该调用它们。

关于c - 结构不安全警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47971732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com