首页 > 杂记1

杂记1

  做笔记用,大家勿睬

  VS中关于scanf和gets等的安全问题

    vS2013中有很多函数的用法和书上讲述的不是特别一样,比如,scanf使用不了,要用scanf_s,还有的使用gets时,括号里面传参  时不光需要传入数组名,还需要传数组长 度,比如char arr[6];gets(arr,6);才可以正常的输入。原因是VS使用了更加安全的  run-time library routines.新的security CRT function(带有“_s”后缀的函数)。旧式的scanf在读取的时候会根据format指示  从缓冲区中读取直至结束,但是有些时候会format指示会有Bug,导致scanf读取了给定的缓冲区以外(数组越界)的数据。总之  带"_s"的是不带"_S"的安全版需要注意的是,scanf_s,gets_s等是微软公司提供的,并不是标准C语言的知识,所以建议大家不要使用

   解决办法

  1.更改预处理定义:

        项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,增加:

            _CRT_SECURE_NO_DEPRECATE

  2.打开VS的安装目录,一次打开文件夹VC->vcprojectitems,找到newc++file.cpp,右击以文本方式打开,在编辑页面输入#define _CRT_SECURE_NO_WARNINGS 1 ,以后每次新建一个项目的时候会自动生成该条语句

编码风格

  编写项目的时候,每写一个模块,边测试边写代码,尽量避免代码太多时候,检查哪个模块不方便

生成随机值

    srand():初始化随机数发生器  <stdlib.h>

     rand():随机数发生器    

     time():随机数  

     具体的使用方式:在主函数中用srand((unsigned)time(NULL)),然后使用int a = rand()%10    产生0-10的随机数

(printf中的格式控制符)

   无符号的整型 %u  无符号的长整形%lu



(传址注意事项

    当传入一些地址(数组等),需要对地址内容进行改变,且需要返回首地址时,就另外定义一个新的临时变量,令其等于该地址,然后通过该临时     变量操作地址内容,同时原地址还不改变



(断言)

    每传入一个地址到一个函数中时,注意断言,assert(地址),防止传址错误



(开辟临时空间)

  1.每次使用molloc或者realloc时,注意使用if(!a){exit(0);}通过此方式防止开辟空间不成功。解释一下,int *a;a =      (int*)malloco(sizeof(int)),   如果开辟空间不成功,则a指向错误,所以!a为真,然后跳入if语句,就直接退出了。

  2.在数据结构中会经常使用删除一个节点的造作,每次我们删除一个节点的时候,注意使用free(a),把空间释放掉。



(对待一个具体问题的几点建议)

   1.遇到一个问题时,注意把问题化简成一个小问题,通过解决小问题再解决大问题。

   2.要联想到生活中的实例,比如我们逆置一个字符串的内容的时候,我们一般的做法是先把内容取出来,再反过来放进去,但是如果我们联想生活    中的实例的话,这就好比一队任排成一列,那我们生活中的做法只需要最前面一个和最后面一个调整位置,最前第二个和倒数第二个调整位置,以    此   类推,这样写程序是不是就会轻松很多。

   3.遇到一个问题时,使用上面的一点点小建议,然后多想其他算法。



(const)

   在定义一些变量或者一些变量的内容不允许修改的时候,适当的使用一些const。



(Sleep)

     Sleep(3000);

     程序运行到这一句的时候就会停3秒钟。



    

     

  

  



更多相关:

  • 原文出处: 韩昊    1 2 3 4 5 6 7 8 9 10 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事   谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。   转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 我保证这篇文章...

  • 原文出处: 韩昊   我保证这篇文章和你以前看过的所有文章都不同,这是 2012 年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维...

  • 很多Linux高手都喜欢使用screen命令,screen命令可以使你轻松地使用一个终端控制其他终端。尽管screen本身是一个非常有用的工具,byobu作为screen的增强版本,比screen更加好用而且美观,并且提供有用的信息和快捷的热键。 想象一下这样一个场景:你通过Secure Shell(ssh)链接到一个服务器,并...

  • NarrowbandPrimary Synchronization Signal时域位置每1个SFN存在一个NPSSSFNSubframeSymbol长度每个SFN5最后11个symbol11个symbols频域位置NB-IOT下行带宽固定180kHz,一个PRB,12个子载波。...

  •  [h1]反斜杠只能够阻止一个字符  [h2]位于键盘的左上角,和~公用一个键。...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...

  • 《初级前端开发人员经常容易忽视几个细节问题汇总》 1、使用 变量.toString()的时候记得对变量进行判空 2、使用 字符串.indexOf()的时候记得对字符串变量进行判断是否为null或undefined 3、使用 数组.length 或 数组[1]、数组[2] 的时候记得对数组进行判断是否为null或undefined...

  • 使用ET模型的时候,一定要注意,每次收到有效通知,然后读取数据的时候,务必每次读取干净(读到出错为止)。当再次调用check(sockfd)的时候才能正确返回。...

  • 有时候看到有意思的demo,在头痛导入项目的编码和workspace的编码不一样的时候 我试着将 笔记本打开一个类一个类的复制, demo的类比较少的时候 可以忍受,demo的类多的时候 除了靠之外 别无办法 今天再找仿ios样式demo的时候 实在受不了乱码,新浪一搜,出现给力的工具类 大致思路 挺简单的 无非是找到路径 重新转码。...

  • 90后的无奈:当我们出生的时候,奶粉里都有毒了,当我们长身体的时候,只能吃垃圾食品了,当我们要上幼儿园的时候,开始乱收费了,当我们大学毕业的时候,毕业就是失业了,当我想努力赚钱的时候股市倒了,当我想努力谈恋爱的时候帅哥都成GAY了,当我想追求一切流行的时候,又开始非主流了!80后的无奈:当我们读小学的时候,读大学不要钱;我们要读大学...