提示:本文是对C语言基础知识:字符串、字符和字节部分的回顾总结。
文章目录
字符串基础
C语言并没有显式的字符串数据类型,因为字符串以 字符串常量的形式出现 或者 存储于字符数组中。
字符串 :就是一串零个或多个字符,并且以一个 位模式为全0的 NUL 字节结尾。
NUL字节 是字符串的终止符,但它本身并不是字符串的一部分,所以字符串的长度并不包括 NUL 字节。
头文件 string.h 包含了使用字符串函数所需的原型和声明。
字符串长度
字符串的长度就是它所包含的字符个数。
库函数 strlen 的原型如下:
size_t strlen( char const *string );
strlen返回一个类型为 size_t 的值,这个类型是在头文件 stddef.h 中定义的,它是一个 无符号整数类型 。
/*
** 计算字符串参数的长度
*/
#include<stddef.h>
size_t strlen( char const *string )
{
unsigned int length;
for( length = 0; *string++ != '\0'; ) //*string++,是字符串指针string++,然后再取引用
length += 1;
return length;
}
不受限制的字符串函数
最常用的字符串函数都是“不受限制”的,就是说它们只是通过寻找字符串参数结尾的 NUL 字节来判断它的长度。
复制字符串
复制字符串的函数是 strcpy,原型如下:
char *strcpy( char *dst, char const *src );
/*此函数把参数 src字符串复制到 dst 参数。*/
由于 dst 参数将进行修改,所以它必须是个字符数组或者是一个指向动态内存的数组指针,不能使用字符串常量。
目标参数的以前内容将被覆盖并丢失。即使新的字符串比 dst 原先的内存更短,由于新的字符串是以 NUL字节结尾,,所以老字符串最后剩余的几个字符也将会被有效删除。
例如:
cahr message[] = "Original message";
...
if ( ... )
strcpy( message, "Different" );
程序员必须保证目标字符数组的空间足以容纳需要复制的字符串。
连接字符串
将一个字符串添加(连接)到另一个字符串的后面的函数是 strcat ,原型如下:
char *strcat( char *dst, char const *src );
strcat 函数要求 dst 参数原先已经包含了一个字符串(可以是空字符串)。
程序员必须保证目标字符数组剩余的空间足以保存整个源字符串。