微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 周立功《程序设计与数据结构》:字符串函数

周立功《程序设计与数据结构》:字符串函数

时间:08-05 来源:ZLG致远电子 点击:

如下:

int strlen(string cStr);

int strlen(char cStr[]);

int strlen(char *cStr); 

 

虽然标准C提供的string.h接口提供了一系列的字符串操作函数,它允许在函数调用时将字符串作为一个整体对待,但这些函数同样要求我们了解底层的表示,即函数将分配内存的任务留给了用户,特别是检测缓冲区溢出的条件。当使用这个接口时,用户要为每个字符串的存储负责。这种分配方式不仅增加了程序员的负担,也间接使得编码中的错误增多了。

 

溢出问题

 

使用gets()函数从标准输入读入字符串容易导致缓冲区溢出,而误用strcpy()和strcat()同样如此。因为使用某些函数可能造成攻击者用格式化字符串攻击的方法访问内存,甚至能够注入代码,所以C11版本加入了strcat_s()和strcpy_s()函数,如果发生缓冲区溢出,它们会返回错误。printf()、fprintf()和snprintf()这些函数都接受格式化字符串作为参数,避免这类攻击的一种简单方法是不要将用户提供的格式化字符串传给这些函数。

 

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top