您的位置:首页 > 编程语言 > C语言/C++

C-字符串

2015-11-14 22:07 190 查看

C-字符串

基本点

从概念上讲, C语言中没有字符串数据类型

在C语言中,是使用字符数组来模拟字符串

C语言中的字符串都是以’\0’结束的字符数组

C语言中的字符串可以分配与栈空间、堆空间或者只读存储区

字符串的长度问题

字符串的长度就是字符串中所包含的字符的个数

C语言中的字符串的长度指的是第一个’\0’前的字符个数

即C语言是通过’\0’结束符来确定字符串的长度

经典小例子

strlen函数的实现:

//方式一
int strlen(const char* s)
{
int length = 0;
//assert(s);
while(*s++)
{
length++;
}

return length;
}
//方式二
int strlen(const char* s)
{
return ((assert(s)), (*s ? (strlen(s+1) + 1) : 0 ));
}


-  不要重复制造轮子
-  一般情况下, 不要去自行编写C标准库已经提供的函数, 这些函数效率安全一般都很高
-  标准库提供的函数有时会使用汇编语言实现,目的就是充分利用机器所提供的特殊指令来最求最大速度
-  字符串相关函数
-  不受限的字符串函数 strcpy, strcat, strcmp
-  这些函数在处理字符串是都是以'\0'作为结尾标记, 因此输入产生必须包含'\0'
-  strcpy 和strcat必须保证目标字符数组的剩余空间足以保存整个源字符串加上'\0'
-  受限的字符串函数  strncpy, strncat, strncmp
-  即这些函数, 在处理字符串时,会根据我们指定的位置来处理(不会依赖'\0'), 即只要你不糊涂, 他们是安全的
-  strncpy只赋值len个字符串到目标字符串中,
-  当源字符串长度小于len时, 剩余空间以'\0'填充, 大于时,那就填满了, 就没有'\0', 那就是你的问题喽
-  strncat 与strncmp的处理与strncpy类似, 即他们会根据你提供的'n'来处理!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言