分类: C/C++
2014-10-12 11:43:48
C语言没有字符串类型,使用字符数组来模拟字符串,以\0结束的字符数组,字符串可以分配在栈空间,堆空间,只读存储区。char* s3 = “Hello”;字符串只读区,不能修改。
字符串的长度就是字符串所包含字符的个数,c语言中的字符串长度指的是第一个\0字符前出现的字符个数。
警告!if(strlen(a) >= strlen(b)){} 并不等价 if(strlen(a) – strlen(b) >= 0){}
strlen的返回值是用无符号数定义的因此相减不可能产生负数,所以不要写成if相减的形式。
assert (字符串),当字符串为NULL的时候会报错。
对上面程序用一条语句实现strlen,主要方法:递归、三目运算符、逗号运算符
长度不受限制的字符串函数都是以‘\0’作为结尾标记来进行的,
字符串复制:char* strcpy(char* dst, const char* src);
字符串连接: char* strcat(char* dst, const char* src);
字符串比较:int strcmp(const char* s1,const char* s2);
strcpy和strcat必须保证目标字符串数组的剩余空间足以保存整个源字符串。
Strcmp以0值表示两个字符串相等,第一个字符串大于第二个返回值大于0,反之小于0。
没输出,
有输出。
长度受限制字符串函数接收一个显示的长度参数用于限定操作的字符数
字符串复制:char* strncpy(char* dst, const char* src, size_t len);
字符串连接: char* strncat(char* dst, const char* src, size_t len);
字符串比较:int strncmp(const char* s1,const char* s2, size_t len );
如何实现库函数的strcpy?
strncpy 只复制len个字符到目标字符串:当源字符串的长度小于len时剩余空间以\0填充,反之只有len个字符会被复制,且它将不会以\0结束。
strncat最多从源字符串中复制len个字符都目标串中:strncat总是在结果字符后面添加\0,strncat不会用\0填充目标串中的剩余空间。
strncmp只比较len个字符是否相等。