//腾讯QQ2008年笔试题中的附加题(30分)
//从程序健壮性进行分析,下面的FillUserInfo函数和main函数分别
//存在什么问题?
#include <iostream>
#include <string>
#include <memory>
#define MAX_NAME_LEN 20
struct USERINFO
{
int nAge;
char szName[MAX_NAME_LEN];
};
void FillUserInfo(USERINFO* parUserInfo)
{
std::cout<<"请输入用户的个数:";
int nCount=0;
std::cin>>nCount;
for(int i=0;i<nCount;i++)
{
std::cout<<"请输入年龄:";
//原先是这样的
//std::cin>>parUserInfo[i]->nAge
std::cin>>parUserInfo[i].nAge;
std::string strName;
std::cout<<"请输入姓名:";
std::cin>>strName;
strcpy(parUserInfo[i].szName,strName.c_str());
}
}
int main(int argc,char* argv[])
{
//USERINFO arUserInfos[2]={0};
USERINFO arUserInfos[2];
ZeroMemory(arUserInfos, sizeof(arUserInfos));
FillUserInfo(arUserInfos);
printf("The first name is:");
printf(arUserInfos[0].szName);
printf("\n");
return 0;
}
//********************************************************************
// 百度知道上某牛人给的解答:
// 1:函数入口未验证.要防止FillUserInfo(USERINFO* parUserInfo)的
// 参数指针是【非法指针】。
// 入口验证可以这样写:ASSERT(parUserInfo);
// 或:
// if(parUserInfo == NULL){return;}
// 2:从设计的角度来说,把数据长度的限定和数据传递值分开是非常危险的。
// 比如FillUserInfo(USERINFO* parUserInfo)我传了USERINFO arUserInfos[100]
// 进去,里面输入nCount的时候我输入101呢?一般来说应该FillUserInfo(USERINFO*
// parUserInfo,int nSize);传入一个需要赋值的长度参数.而且你在函数里面也无法
// 计算parUserInfo的长度.
// 3:将std::string赋值给【C风格字符串】是十分危险的。string是动态开辟内存,
// 【长度是无限的】。如果超过C风格数组的长度即MAX_NAME_LEN很容易造成栈溢出
// 或内存访问崩溃。如需这样用.请用strncpy(parUserInfo[i].szName,strName.c_str(),20);
// 4:一个细节.for(int i=0;i<nCount;i++)
// 虽然C++支持定义时使用,但不建议这么写。不同版本的编译器对此理解不同,不利于
// 扩展和向上升级。微软建议还是用
// int i = 0 ;
// for(i=0;i<nCount;++i)
// 5:USERINFO arUserInfos[100]={0};结构体赋值不建议这么做。
// 有两种推荐的安全做法
// 1--构造函数初始化.
// 2--ZeroMemory(arUserInfos,sizeof(arUserInfos)); 调用memset置零
// 6:混用printf和cout,cin也是不好的,虽然不会有危险,但是其使用不同的缓冲流可能
// 存在输出顺序混乱的问题
//************************************************************************
//************************************************************************
// 【关于c_str()函数的学习】
// 1,C语言中没有string类型,C++中为了与C语言兼容,使用string类对象的
// 成员函数c_str()把string对象转换成C中的字符串样式
// 注意:一定要使用strcpy()函数等操作c_str()返回的指针
// 原因:c_str函数的返回值是const char *的,不能直接赋值给char *
// 包含的头文件:<cstring>
// 2,最好不要这样写:
// char *c;
// string s = "1234";
// c = s.c_str();
//
//************************************************************************
相关推荐
【每天一个知识点】多视图子空间聚类(Multi-view Subspace Clustering)
本文深入解析了多视图子空间聚类技术,这是一种处理多源异构数据的先进方法。它通过融合多个数据视图(如文本、图像、网络结构)的共识与互补信息,学习统一的潜在子空间表示,从而获得比单一视图更鲁棒、准确的聚类结果。文章详细阐述了其核心思想、主流技术流派(如图融合、共同潜在子空间、张量及深度学习方法),并提供了Python实战代码与调优经验,适用于跨模态检索、生物信息学等多领域复杂数据分析。
腾讯QQ2008年笔试题中的附加题(30分)
//腾讯QQ2008年笔试题中的附加题(30分) //从程序健壮性进行分析,下面的FillUserInfo函数和main函数分别 //存在什么问题? #include #include #include #define MAX_NAME_LEN 20 struct USERINFO { int nAge; char szName[MAX_NAME_LEN]; }; void Fi
Windows下玩转Spark:零基础本地集群搭建与实战演示
本文详细介绍了在Windows系统下零基础搭建Spark本地集群的完整流程,包括环境准备、集群启动、实战案例演示及性能优化技巧。通过Standalone模式快速部署,结合WordCount等经典案例帮助初学者快速掌握Spark数据处理,特别适合Windows环境下的大数据开发入门学习。
软件构造相关五
一、健壮性和正确性的简单介绍 1.1Robustness 健壮性 1.1.1 定义:健壮性又称鲁棒性,是指软件对于规范要求以外的输入情况的处理能力。所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。 简单来说就是系统在正常输入或不正常外部环境下仍能够表现正常的程度。 1.1.2面向健壮性编程的做法 处理未期望的行为和错误终止 即使终止执行,也要准确/...
F5高可用HA配置详情
F5 HA详细配置
zynq7020的arm A9核降频实录
zynq arm9 cortex a9 降频
软件质量测试中的健壮性测试是什么?一文和你说
在验证我们构建的计算机系统的健壮性时,无论编程语言的语义如何,尤其是当存在多个依赖项时,它都是必要的。一些健壮性测试解决方案提供自动生成测试用例,这些用例可以提高质量,并帮助在目标硬件上验证和验证软件组件,这是在最严格的安全完整性级别内的需求, 例如DO-178C过程标准中的DAL A。但即使取得了这样的成功,不幸的是也会有死亡、伤害和诉讼,但它为健壮性测试的有效性提供了一个有效的论据。我们用来测试质量和可靠性的流程之一被称为健壮性测试,即在存在异常输入或压力环境条件的情况下,系统正常运行的程度。
混沌系统在图像加密中的应用(二维离散Hénon混沌映射)
Hénon映射是一种二维离散时间动力系统,由美国数学家Michel Hénon在1976年引入。它是混沌动力系统中的经典模型之一,具有简单的形式和复杂的行为。
#软件构造 健壮性与正确性
健壮性 健壮性:系统在不 正常输入或不正常外部环境下仍能够表现正常的程度 面向健壮性的编程: 处理未期望的行为和错误终止 即使终止执行,也要准确/无歧义的向用户展示全面的错误信息 错误信息有助于进行debug 健壮性法则 (Postel’s 准则) 对自己的代码要保守,对用户的行为要开放 封闭实现细节,限定 用户的恶意行为 考虑极端情况,没有“不可能” ...
大疆A型板使用经验分享(二)——A型板原理图和引脚图
一.原理图 二.引脚图
2025年开源气象大模型的实现原理与实践指南
气象大模型在人工智能时代实现了革命性突破,通过深度学习技术以更低的计算成本达到甚至超越传统数值天气预报的精度。开源气象大模型的出现使得全球研究者和机构都能参与气象AI的创新。本文详细解析了开源气象大模型的实现原理,包括核心架构、数据准备、训练方法和实际预测流程,并提供了实践指南。核心架构主要采用Transformer、图神经网络和扩散模型,处理多模态数据融合和时空联合建模。数据体系构建涉及数据来源、预处理和增强策略。模型训练关键技术包括损失函数设计、分布式训练优化和训练过程监控。微调与领域适应策略包括迁移学
面向正确性和健壮性的软件构造
HIT SoftwareConstruction
11、体内皮质功能的电压敏感染料成像技术
本文详细介绍了电压敏感染料成像(VSDI)技术在体内皮质功能研究中的应用。内容涵盖VSDI的技术起源、作用机制、信号特点与解读局限性,以及其在映射感觉皮质功能区方面的优势。文章对比了VSDI与电极记录和钙成像技术的差异,突出了其在高时空分辨率下监测神经元群体亚阈值活动的独特价值。同时,提供了完整的实验操作流程,包括手术步骤、染料应用、光学系统配置及数据分析方法,并总结了常见问题及其解决方案。随着基因靶向和多模态技术结合的发展,VSDI有望进一步提升信号特异性和空间精度,成为解析大脑网络动态的重要工具。
提升程序的健壮性
如何提升程序的健壮性,这一点在今天之前基本上没有考虑过,或者说考虑的很少。不过在刚才,查看Demo的时候发现,这些大佬写的代码,都会有意无意地考虑到程序的健壮性的问题。 那我就稍微整理一下常见的思路。 判误 这个比较容易理解,就是如果一个函数有参数,或者说是需要从其它地方得到值,那么会进行参数或者值得判误操作,判断该值是否满足我们的需要。 比如,文件的判空,数据的判正负,操作的判真等,这点也是...
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
深入理解程序的健壮性
1 问题程序健壮性是一个关键的软件质量属性,它涉及软件系统在面临各种异常情况时的表现。具体来说,健壮性是指软件对于规范要求以外的输入情况的处理能力。这包括了对错误输入、异常环境以及系统内部错误的响应和处理。2方法作用错误处理能力增强。用户体验提升。系统可靠性增强。维护性和可扩展性提升。降低维护成本。安全性提升。代码例子内容:通过输入来解释健壮性。代码清单1def add_numbers(a, b...
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
java程序的健壮性与正确性
java程序的健壮性与正确性
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
程序的健壮性与codereview
文章目录程序的健壮性与codereview一、正确性影响程序正确性的因素前置状态判定“受理—处理—关闭”模型“申请—审批—善后—完成”模型二、健壮性错误数据系统内部出现问题程序健壮性注意点三、方法总结四、code review1.代码规范:明确Coding规则2.功能文档编写3.review的范围与reviewer职能 程序的健壮性与codereview 功能分类:操作类,查询类 健壮性:尽量少的...
程序的健壮性Robustness
所谓的程序健壮性是指处理异常的能力,在异常中能够独立处理异常,并且把正确的答案输出。 例如: 有一个程序能够下载一个文件到指定的路径,但是这个路径是不存在的,因此程序必须要处理这个情况。 例1:下面的代码就没有很好的考虑到异常情况,如果service层出现某个异常,则返回给前端的值就为null 例2:下面的代码没有考虑到returnresult为null时,catch...
如何提高程序的健壮性,增加判断。
如果后台在返回的时候少了一个属性?前端会不会报错,这是我们前端开发一定会遇到的问题。那么如何的提高程序的健壮性呢。 关于这个问题,我们可以在实例化这个对象的时候进行判读来增加程序的健壮性。下面是一个参考示例。 public class ClientUser implements Parcelable { public static final Parcelable.Cre
提高程序健壮性的方法
占位
驱动程序的健壮性考虑
驱动程序的健壮性要考虑硬件出问题的时候不会导致内核的工作异常。比如驱动注册的时候要对硬件的识别,设备硬件是否存在或者硬件是否正常。如果硬件模块不正常,但是还要去注册,访问的时候会出现问题,如果处理不当会导致内核CRASH。比如一个I2c设备,硬件已经不正常,如果不加判断去继续注册,可能有些设备的资源出现空,上层通过API访问的时候可能出现空指针,导致系统重启。在注册驱动的开始要对硬件诊断,如果硬件
程序的健壮性和鲁棒性
一、健壮性 健壮性是指软件对于规范要求以外的输入情况的处理能力。 所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。 另外健壮性有时也和容错性,可移植性,正确性有交叉的地方。 比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量度标准,但是也可以认为这个软件是健壮的。 一个软件可以正确地运行在不同环境下,...
《Effective Python》第十章 健壮性——使用 assert 和 raise 提升 Python 程序的健壮性
本文探讨Python中assert与raise的合理使用,强调二者本质区别:assert用于开发阶段验证内部假设,不应处理用户输入;raise是对外API的错误报告机制。通过评分系统案例展示了两种语句的不同应用场景,指出assert应验证函数参数和算法前提,而raise需定义清晰的自定义异常类。特别提醒不要在生产环境依赖assert检查用户输入,也不要捕获AssertionError以免掩盖问题。文章总结了正确使用这两个语句的原则,强调合理运用能提升代码健壮性和可维护性。
以血的教训来谈程序的健壮性&&练习3-3
首先请各位看下面这段代码: #include #define MAX 100 //limited of amount of array's element void Expand(char s1[], char s2[]); int main() { char string_origin[MAX]; char string_transformation[MAX]; int
C语言 函数——函数封装与程序的健壮性
检查入口参数的有效性、合法性。*存在死代码的原因何在?*检查函数调用成功与否。
459



被折叠的 条评论
为什么被折叠?



