![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
C语言杂七杂八
卡好后生
学IT,进大厂,月薪过万
展开
-
scanf函数不安全的原因
如下程序,s数组最多存储4个字符(末位存储'\0'),当输入超过4个字符时,会使用s数组后面的内存空间,而S后面的内存没有使用权限或者已经被别的数据占用,这种错误只能等到程序运行时才能检测出来,在编译期间根本无法检测;等函数没有对输入进行边界检查,这可能导致在输入的字符串长度超过目标缓冲区的容量时,覆盖相邻内存空间的数据,从而引发缓冲区溢出。不会对输入进行边界检查,这可能导致在输入的字符串长度超过目标缓冲区的容量时,覆盖相邻内存空间的数据,从而引发缓冲区溢出。难以追踪和调试:由于。原创 2024-02-01 12:37:43 · 575 阅读 · 0 评论 -
VisualStudio使用scanf函数报错
这是因为VisualStudio编译器自己提供了一个输入函数,编译器想让我们使用它提供的输入函数。在VisualStudio中使用C语言的scanf函数进行编译时会报这样的错误。使用它提供的输入函数,scanf_s;原创 2024-01-31 22:16:05 · 439 阅读 · 0 评论 -
C语言里\0是什么,有什么用
从上面这个代码示例以及打印结果可以看出,arr1是一个字符串,所以程序给它加上'\0'结束标志,程序读取到f后面的'\0'就结束了,打印结果就是字符串。'\0'的意思是 ASCII 码为 0 的字符,对应的字符是(Null),表示“字符串结束符”,是字符串结束的标志。arr2是一个字符数组,程序没有给它加上结束标志,程序什么时候停止读取是随机的,打印结果就是字符串加乱码。在C语言中'\0'是字符串的结束标志,它经常被程序自动加在字符串后面。它其实就是告诉程序,在读取字符串时,读到哪一步该结束了。原创 2024-02-01 17:05:39 · 1888 阅读 · 0 评论