作者:欢颜是胖妞妞08 | 来源:互联网 | 2023-10-09 19:44
1、字符串C语言没有字符串数据类型,因为字符串以字符串常量的形式出现或存储于字符数组中.字符串常量和适用于那些程序不会对他们进行修改的字符串.所有其他字符串都必须存储于字符串数组或
1、字符串
C语言没有字符串数据类型,因为字符串以字符串常量的形式出现或存储于字符数组中.
字符串常量和适用于那些程序不会对他们进行修改的字符串.
所有其他字符串都必须存储于字符串数组或动态分配的内存中.
字符串是一个或多个字符,并且以一个位模式全0 的NUL字节结尾
头文件 string.h 包含了使用字符串函数所需的原型和声明.
2、字符串长度
用库函数 strlen 计算字符串长度
size_t strlen(char const *string);
size_t 是一个无符号整型,在stddef.h中定义.
警告:
if( strlen( x ) >= strlen( y ) ) //1
if( strlen( x ) - strlen( y ) >= 0)//2
第一条语句可以正常工作
第二天语句永远是真. 因为strlen的结果是个无符号数,所以操作符 >= 左边的表达式也将是无符号数,而无符号数绝对不可能是负的.
把strlen的返回值强制转换为int可以消除这个问题,但是不推荐.
//计算字符串参数的长度
size_t strlen (char const *string){
int length;
for( length = 0; *string++ != ‘\0‘;)
length += 1;
return length;
}
3、不受限制的字符串函数
最常用的字符串函数都是“不受限制”的,就是说他们值是通过寻找字符串参数结尾的NUL字节来判断它的长度.
这些函数一般都指定一块内存用于存放结果字符串.在使用这些函数时,程序员必须保证结果字符串不会溢出这块内存.
3.1 复制字符串
char strcpy(char det, char const *src);
这个函数把参数src字符串复制到dst参数.如果参数src和dst在内存中出现重叠(也就是两者相同),其结果是为定义的.
由于dst参数将进行修改,所以它必须是个字符数组或者一个指向动态分配内存的数组指针,不能使用字符串常量.
目标参数的之前的内容将被覆盖并丢失.即使新的字符串比dst原先的内存更短,由于新字符串是以NUL字节结尾,所以老字符串最后剩余的几个字符也会被有效地删除
例子:
char message[] = "Original message";
...
if(...)
strcpy(message, "Different" );
如果if条件为真,并且顺利复制,数组将包含以下的内容: