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 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数