`
wangleide414
  • 浏览: 606802 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

C语言危险函数

 
阅读更多

最危险:
gets 	 	使用 fgets(buf, size, stdin)。这几乎总是一个大问题!

很危险:
strcpy 	 	改为使用 strncpy。
strcat 		改为使用 strncat。
sprintf 	改为使用 snprintf,或者使用精度说明符。
scanf 		使用精度说明符,或自己进行解析。
sscanf 		使用精度说明符,或自己进行解析。
fscanf 		使用精度说明符,或自己进行解析。
vfscanf 	使用精度说明符,或自己进行解析。
vsprintf 	改为使用 vsnprintf,或者使用精度说明符。
vscanf 		使用精度说明符,或自己进行解析。
vsscanf 	使用精度说明符,或自己进行解析。
streadd 	确保分配的目的地参数大小是源参数大小的四倍。
strecpy 	确保分配的目的地参数大小是源参数大小的四倍。

很危险(或稍小,取决于实现):
realpath 	分配缓冲区大小为 MAXPATHLEN。同样,手工检查参数以确保输入参数不超过 MAXPATHLEN。
syslog 		在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。
getopt 		在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。
getopt_long 	在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。
getpass 	在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。

危险:
strtrns 	手工检查来查看目的地大小是否至少与源字符串相等。

中等危险:
getchar  	如果在循环中使用该函数,确保检查缓冲区边界。
fgetc 		如果在循环中使用该函数,确保检查缓冲区边界。
getc 		如果在循环中使用该函数,确保检查缓冲区边界。
read 		如果在循环中使用该函数,确保检查缓冲区边界。

低危险:
bcopy 		确保缓冲区大小与它所说的一样大。
fgets 		确保缓冲区大小与它所说的一样大。
memcpy 		确保缓冲区大小与它所说的一样大。
snprintf 	确保缓冲区大小与它所说的一样大。
strccpy 	确保缓冲区大小与它所说的一样大。
strcadd 	确保缓冲区大小与它所说的一样大。
strncpy 	确保缓冲区大小与它所说的一样大。
vsnprintf 	确保缓冲区大小与它所说的一样大。
分享到:
评论

相关推荐

    可重入函数c语言

    "可重入函数c语言" 可重入函数是指可以由多于一个任务并发使用,而不必担心数据错误的函数。相反,不可重入函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)...

    C语言中字符串处理函数介绍

    在C语言中,字符串处理是极其常见的需求,因此编译器通常会提供一系列处理字符串的函数以供开发者使用。这些函数广泛应用于各种场合,包括但不限于字符串的输入输出、连接、复制、比较和长度计算等。以下是一些基本...

    郝斌老师C语言大纲.pdf

    C语言的特点是代码量小、速度快、功能强大,但也存在一些缺点,如危险性高、开发周期长、可移植性不强。 二、C语言的应用领域 C语言的应用领域非常广泛,包括操作系统、嵌入式系统、网络编程、数据库、云计算、...

    C语言核心编程-c语言

    6. **内存管理**:C语言允许程序员直接申请和释放内存(malloc, free),这使得C语言既灵活又危险,因为错误的内存管理可能导致内存泄漏或段错误。 7. **位操作**:C语言提供了位运算符,如位与(&)、位或(|)、位...

    C语言基础教程 吕凤翥

    3. **直接操作内存**:C语言允许程序员直接访问和操作内存,提供了指针类型,这是其强大但也有一定危险性的特性。 4. **移植性好**:由于C语言的编译器可针对多种不同的硬件平台编写,因此C语言程序具有良好的可...

    关于C语言中使用指针作为函数参数的问题.pdf

    在C语言编程中,指针的使用是一种非常强大但也非常危险的功能。指针之所以强大,是因为它能够直接操作内存地址,从而可以有效地访问、修改和分配内存。然而,如果使用不当,未初始化的指针极容易导致程序崩溃。在...

    c语言连接两个字符串函数

    总结一下,`strcat`函数是C语言中用于拼接字符串的实用工具,其基本用法是将源字符串的副本添加到目标字符串的末尾。然而,使用时务必注意内存管理,确保目标字符串有足够的空间容纳源字符串,并避免可能出现的字符...

    C语言学习大纲__郝斌(讲解)

    C语言是一种广泛使用的编程语言,它的特点是代码量小、速度快、功能强大,但也存在一些缺点,如危险性高、开发周期长、可移植性不强。C语言的应用领域主要是系统领域。 学习目标 学习C语言的目标是了解程序语言及...

    C语言经典105例

    接着,函数是C语言中的重要组成部分,用于组织代码并实现模块化。这里会有创建自定义函数的例子,以及对标准库函数如printf()和scanf()的使用。理解函数的参数传递和返回值对于编写高效代码至关重要。 内存管理是...

    郝斌C语言入门视频课件

    郝斌老师的课程涵盖了C语言的基本概念、数据类型、变量、运算符、流程控制、函数、指针等核心知识点。在学习过程中,应当注重理解算法、熟悉语法规则,并通过编写和调试程序来提升实践能力。此外,良好的编程习惯,...

    c语言矿井逃生.zip

    在这个项目中,开发者设计了一个程序,用户需要编写C语言代码来控制角色在矿井中寻找出口,避开危险,最终成功逃生。这种方式将理论学习与实践操作相结合,极大地提高了学习者的兴趣和参与度。 首先,我们需要了解...

    【C语言】两个指针的坑

    在C语言和C++语言中,指针是用来直接访问内存的一种方式。指针在使用不当的情况下非常容易出现问题,尤其是内存越界、野指针(未初始化或者已经释放的指针)、空指针访问等,都会造成程序的运行时错误,甚至导致程序...

    c语言青蛙过河小游戏 小游戏 青蛙

    【标题】:“C语言青蛙过河小游戏”是一个基于C语言编程的小型游戏,它模拟了青蛙试图通过一个布满危险的河流的场景。这个小游戏旨在帮助初学者理解基本的编程概念,如条件语句、循环控制和函数使用。 【描述】:...

    四道经典C语言指针试题

    试题二揭示了返回局部变量地址的危险。`GetMemory`函数中的`p`是一个局部自动变量数组,当函数返回时,它占用的内存被回收。然而,函数返回`p`的地址给`Test`函数,`str`被设为此地址。由于该内存区域已不再有效,...

    地图符号设计 c语言实现

    2. 符号的颜色:地图上的颜色编码通常有特殊含义,如红色表示危险,绿色表示安全。C语言中可以使用RGB或十六进制值来指定颜色。 3. 符号的方向:某些符号可能需要根据其在地图上的方向进行旋转,如箭头或指向标志,...

    《你必须知道的495个C语言问题》

    《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预...

    C语言学习大纲__郝斌(讲解).doc

    课程规划包括C语言简介、基本编程知识、数据类型、运算符和表达式、流程控制、函数、数组、指针、变量的作用域和存储方式、扩展数据类型、专题等。每一讲都详细介绍了C语言的各个方面,帮助读者深入了解C语言。 四...

Global site tag (gtag.js) - Google Analytics