C++ TwoDay
最近同事离职东西都交接在我这,有些忙。外加c++真的学着容易自闭…总之借口总是有很多。。。
言归正传,这次分享一下 最近的知识 以及记录一下 最近的收获
C初识字符串
最近看到了字符串这块。
首先,想要在c语言中使用字符串,需要引用 string.h 这个头文件。在c语言中字符串是以 \0 结尾的,写代码的时候可以不去加 但编译器在编译过程中会处理,此时字符串的指针里面是包含一个 \0 的,例如:char str[]=“abc” 实际上这个str中是存在四个存储区。
字符串在编译的时候会替换成第一个字符所在的存储区地址。例如:char str[]=“abc” 其中‘a’所在的地址就能代表这个字符串。
字符串的一些用法
关于字符串的一些用法我这边就不多赘述了,毕竟网上单搜字符串用法会出现很多很全面的汇总文章。在这里我就说些小白可能遇到的一些小坑。
通常我们用scanf读取输入的时候,当输入空格或者回车的时候就会被认为结束输入,但是有些时候我们的需求就是输入一些空格,因此现在有一个函数叫 gets();能获取键盘输入数据,可以读取空格与回车。但是,这个gets()方法存在很大的缺陷。这个缺陷就是因为没有限制,所以很容易造成堆栈溢出。不过还有一个更加安全的函数 fgets()可以用来读取输入,因为使用fgets()这个函数的时候有一个参数是预留的空间大小,如果输入的字符串小于预留的长度,他会自动把 \n 加入字符串内。
其次,如果真的使用scanf()来输入字符串,那么需要注意清除缓冲区多余的数据 配合 scanf("%*[^\n]")和 scanf("%*c")清除缓冲区数据,但是如果缓冲区不存在多余数据,那么会强制你输入多余的数据然后才会进行下一步,对此的解决方法便是加一步判断,判断有效字符的个数并且判断最后一个有效字符不是\n字符 之后选择是否执行缓冲区清除的语句。
题外话
最近在练习自己搭建后端服务器 真的是一步一个坑 就一个防火墙问题 困扰了我三天 起初并不知道是防火墙未关闭导致 经过各种方法的尝试才瞎猫碰死耗子解决了这个问题,通过这个问题我发现,凡事都要自己去动手才会真正的踩到那些坑,只看会是没用的。还有。。。有人带是真爽,没人带真的是太难了。不过现在大多数都是自己扛的勇士,比如我。。。总之,与君共勉。