主要是C++数组作业中发现的一些问题。

第一点是关于strcat函数

我用VS2018调用strcat的时候报错,错误信息提示strcat不安全(?)要用strcat_s。修改后,可成功运行。

但这两个函数有啥区别?查询后发现他们区别如下:

stract_s是VS2005及以后新增的具有更强"安全性"的CRT函数。举个例子:

char a[3]={0};

1> strcat_s(a,"abcde"); 或 strcat_s(a,3,"abcde");

2> strcat(a,"abcde");

显然存在缓冲区溢出的问题。

用第一个函数,它会抛出一个异常。

但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误。也可能由于非法内存访问抛出异常

总之,他们是相同功能的函数,不过前者更新,安全性更强。

第二点是函数strcmp。

我一开始用strcmp比较两个字符数组的时候怎么比都是-1,我甚至都把数组a一对一赋值给b了,明明是完全一样的数组啊!折腾了好久好久好久后发现,strcmp比较的是两个字符串。

用输入给a赋值的时候系统会自动在后面补‘\0’,因此数组a可以作为字符串使用。但是一对一赋值给b的时候不会把‘\0’赋值,于是数组b没有‘\0’,不能作为字符串,因此总是出错。

所以我在给b赋值完后加入了

b[n] = '\0';

来解决上述问题。

自闭了。

最后一点是VS快捷键了。

不同编译器有着不同的快捷键,这已经很难受了,这VS还要按两下。这里举例一些有用的快捷键,不定期更新。

ps.  VusialBasic  2018  Community

1.ctrl+k, ctrl+c:选中行注释;

2.ctrl+k, ctrl+u:选中行取消注释;

3.ctrl+k, ctrl+f:选中行代码格式化;

4.break(一般在delete边上):中止程序,可不关闭程序的情况下停止程序的运行;

5.ctrl+break:终止程序,即停止运行,关闭程序;

解决strcmp的错误以及VS的快捷键的更多相关文章

  1. 解决mybatis foreach 错误: Parameter '__frch_item_0' not found

    解决mybatis foreach 错误: Parameter '__frch_item_0' not found 在遍历对象的属性(是ArrayList对象)时报错: org.mybatis.spr ...

  2. 解决WordPress设置错误的url网站不能访问的问题

    通过WordPress后台首选项更改了网站url地址之后,网站就会出现访问不了的情况,一般来说,网站后台也登陆不上去了,我从网上寻找到了四种方法,这四种方法前三种都是需要登陆到后台的,但实际上出错后, ...

  3. NPM全局安装软件包时解决EACCES权限错误

    NPM全局安装软件包时解决EACCES权限错误 Resolving EACCES permissions errors when installing packages globally npm WA ...

  4. 如何解决iOS内存错误

    由于iOS5.0之前没有自动应用计数机制,也没有Java那样的垃圾回收功能.我们都需要自己管理和控制对象的回收,这是一件很麻烦的事情,也是做iOS项目中最容易出现的问题.如果不掌握这些方法,调试这些问 ...

  5. 解决python编码格式错误问题

    一:前言 遇到问题:print输入汉字时提示错误信息 UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: o ...

  6. 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server

    这段时间在研究火车头的入库教程,在“配置登陆信息和数据库(mysql)”连接中,出现“服务器连接错误Host 'XXX' is not allowed to connect to this MySQL ...

  7. 破解LR时,解决loadrunner 破解错误:license security violation.Operation is not allowed

    一.由于在压力测试执行中,出现一个-10803的错误 ,为解决这个错误,重新设置的环境变量,在次执行错误,这个问题解决了,但另外一个问题出来了,LR,打开脚本编辑器老提示找不到TEMP目录,当时没有想 ...

  8. 解决ntp的错误 no server suitable for synchronization found

    当用ntpdate -d 来查询时会发现导致 no server suitable for synchronization found 的错误的信息有以下2个: 错误1.Server dropped: ...

  9. 解决grub引导错误的一次经历

    我的电脑上一共是两块硬盘,1块固态硬盘(sda)装了win7,另外一块普通硬盘(sdb)装了ubuntu和centos两个系统,系统启动的引导是装在sdb上面的ubuntu的grub2,它负责选择不同 ...

随机推荐

  1. JS设计模式之工厂模式

    1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式.我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂.工厂模式根据抽象程度的不同可以分为: ...

  2. vuex实现原理

    一.Store的层次结构 Store,负责管理整个数据访问.修改等: 提高API: State,数据结构: 所有的getters.mutations,全部都注册到store里:结构大概是: { 'xx ...

  3. 对TCP协议握手的理解(转)

    reference:https://www.cnblogs.com/awkflf11/p/9191708.html 目录: 31.Tcp握手的一些问题? 21.Tcp三次握手及SYN攻击: 四次握手? ...

  4. Codeforces Round #324 (Div. 2) (哥德巴赫猜想)

    题目:http://codeforces.com/problemset/problem/584/D 思路: 关于偶数的哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和. 关于奇数的哥德巴赫猜想:任一 ...

  5. 配置JAVA开发环境

    以下为搭建java的开发环境...... 第一步:安装JDK 1. 了解一下 JVM(Java Virtual Machine—Java虚拟机) JRE(Java Runtime Environmen ...

  6. php源码学习——开篇

    这个系列是对php源码的学习记录.由于本人水平有限,可能并不能写的非常清晰和深入,所以,可能只适合本人阅读:) 初次接触php源码,看到陌生的文件夹和大量的文件,可能会觉得茫然无措.php-inter ...

  7. CentOS 7 命令行安装TeamViewer

    由于要通过要远程登录到内网的电脑(一台笔记本),用于在紧急情况下处理服务器故障.刚开始准备使用ssh端口转发,无奈vps转发速度太慢. 后面考虑使用TeamViewer远程控制Windows桌面,但是 ...

  8. JavaBasic_12

    类 抽象:对象的共性 类:产生对象的模板(对于属性来讲,类规定有没有属性以及属性类型,具体的属性值因对象的不同而不同) 数据类型:数据集及基于这个数据集的操作 类:我们自定义类型(定义成员变量,基于数 ...

  9. 《Linux内核原理与分析》第三周作业

    实验:基于kernel的简单的时间片轮转多道程序内核 1.实验要求 完成一个简单的时间片轮转多道程序内核代码 2.实验过程 进入实验楼的linux环境,打开shell,输入以下代码: cd Linux ...

  10. Linux内核分析第六次作业

    分析system_call中断处理过程 一.先在实验楼的虚拟机中MenuOs增加utsname和utsname-asm指令. 具体实现如下: 1.克隆最新新版本的menu,之后进入menu 2.进入t ...