在C/C++开发中容易被忽略却比较有用的两个函数

来源:互联网 发布:商贸公司淘宝 编辑:程序博客网 时间:2024/06/11 18:44
呵呵,标题写法有些以己度人的意思,也许别人都不需要我多余的提醒.但我转念一想,自己犯过的错误别人也许也会犯,因此还是赘述一下,不卖关子了,这两个函数是"sprintf"和"sscanf",已经通晓这两个函数的达人请速速离开,多留无益. 由于高级语言的影响和MFC,STL对C++类库的扩充,以及人习惯用自己熟悉的方法手段解决问题习性的影响,一些很有用的C基本函数常常被大家遗忘,在许多场合这没有什么,大家自有替代的方法,但是在特殊场合却会掉链子,自己写函数又不方便又不安全,有造成无谓损失的危险,所以这里我提醒一下大家注意一下"sprintf"和’’sscanf"两个函数的使用. 1.函数sprintf:将参数以固定格式输出到字符数组中,此数组以空结尾,sprintf不对数组进行边界检查,如果sprintf()生成的输出大于数组的容量,将造成溢出. 例:在str中放置"One A 10" char str[255]; sprintf(str,"%s %c %d","One",’A’,10); 2.函数sscanf:相当与sprintf的反函数,它是将数组中的字符串按固定格式读取到变量中,返回值是实际赋值的变量数,其中不包括*号跳过的域,零代表未赋值域,EOF表示第一次赋值前已经出错. 例:从字符串数组"One A 10"读入到一个字符串变量,一个字符变量,一个整型变量中. char strSrc[]="One A 10"; char strDest[6]; char cDest; int nDest; sscanf("One A 10","%s %c %d",strDest,&cDest,&nDest); 完毕后一个字符串变量,一个字符变量,一个整型变量将分别取到"One",’A’,10的值. 这两个函数在字符串的整合和分解将起到很大的作用,绝对不亚于CString类的Format方法,你可以试试我说的是真是假.
原创粉丝点击