前言
这是第一篇,将把一些基本概念注意点列明,代码都在vs2013测试过,读者如果想用,应该花点时间理解,而不是把注释全部去掉来运行。本篇知识讲解一下安全拷贝的问题及其解决方案,下一篇将介绍安全追加问题
代码及其注释讲解
/* c中由于要追求效率,所以字符串字符数组这类都是先划分好存储区域的 */
/* 注意以下写法 */
/*
char *str1; //字符指针,指向可变,指向内容不知道是常量还是变量(指向内容不知可不可改)
char *str2="abc"; //字符指针,指向字符串常量,指向内容不可改,指向可变
char str3[]="abc"; //字符数组,和str3[3]="abc"效果相同,str3指向内容可改变,但是str3指向不可改变
str2=str3; //用字符指针指向字符数组,指向内容可改变,指向也可改变
//这种形式不太建议,因为会令编程更加不可控,无论怎么用strlen,都只能得出3,而不是4
//且如果作为函数参数,那么就算是用sizeof,也只是把它识别为指针,统一作为4
char str4[5] = "abc";
*/
/* 如果在这片内存区域里进行一些修改,那么就要考虑越界的问题 */
/* 另外,为了控制长度,应该采用推荐使用的字符串函数 */
/*
char *strncpy( //Returns strDest
char *strDest, //Destination string.
const char *strSource, //Source string.
size_t count //Number of characters to be copied
);
char *strncat( //Returns a pointer to the destination string. No return value is reserved to indicate an error
char *strDest, //Null-terminated destination string.