strcat函数使用中注意!
(记录一下今天在项目组中用strcat函数遇到的大坑)
问题描述:今天调项目组中的bug,linux下,只要输入文件路径不全(路径末尾没有"/"),需要自动补全。此时用到了字符串拼接函数strcat。但是老是报段错。
原因分析:搜了一下,都说是,要么内存溢出,要么尝试改变常量造成的。然而排查了一下,都不是。
#define FILEPATH “/home/test_file”
char dest[256]=FILEPATH;
strcat(dest,'/');
照理说不应该报段错,因为根本不可能溢出,也没有尝试修改常量。但是各位发现问题了吗…拼接的不是字符串呀各位!这拼接的是字符。本来源字符串是“/home/test_file\0”,但是拼接完后就变成了“/home/test_file/”,差就差在这最后的\0,它没了!不报段错才怪。记住字符串拼接,不能拼字符常量,拼字符串常量。以上