匿名用户
一级
2011-03-27答复
如下所示。
C语言的字符串一定困扰着大家的感情。
1.char *
char *buff='orisun ';
sizeof(buff )=4用32位存储指针
strlen(buff )=6strlen返回字符串的实际长度,不包括末尾的“ ”
2.char [n]。
char bu[100]='orisun '; 从第7名到第100名为“ ”
sizeof(bu )=100 bu是数组,sizeof返回数组的长度
strlen(bu )=6strlen返回字符串的实际长度,末尾“ ”除外
但不限于printf('%s(n ),bu ); 之前bu[100]=' ';
3.char[]
char bu[]='orisun '; 首先,bu是数组,其长度由“orisun”的长度决定,sizeof(bu )=7
我知道数组需要在第一次指定长度。 以下格式将导致编译失败,因为编译器在编译时分配空间。
char bu[];
bu='orisun ';
将const char*改为char *
const char*的意思不是不可以修改指针,而是不可以修改指针指向的内容。 因此,将const char*分配给char*的结果,本来加上该const的目的就形式化了,没有任何意义。
可以将常量字符分配给字符
只需复制基本类型的“赋值”,即值。 复制后,无论如何修改后面的char都不会影响原始const char
6 .可以进行6.strcpy(char*,const char* )
头文件#include
定义函数char * strcpy (char * dest,const char *src );
函数说明strcpy ) )将参数src字符串复制到参数dest指向的地址。
返回返回值参数dest字符串的起始地址。
附加说明如果参数dest指向的内存空间不够大,可能会发生缓冲区溢出(buffer Overflow )错误,因此在编写程序时请特别小心或用strncpy ()替换
7.strncpy
定义函数char * strncpy (char * dest,const char *src,size_t n );
函数说明strncpy ) )将参数src字符串的前n个字符复制到参数dest指向的地址。
8.strdup复制字符串
定义函数char*strdup(constchar*s );
函数说明strdup ) )在sxdqb )中放置与参数s字符串相同的区域大小,然后将参数s字符串的内容复制到其存储器地址并返回该地址。 这个地址最后可以用free ()释放。
因此,strdup与strcpy的区别在于,使用strdup目标指针不需要(或不能)预先分配空间,而使用strcpy可以预先分配空间。
返回值返回指向所复制的新字符串地址的字符串指针。 如果返回NULL,则表示内存不足。
9.strcat连接字符串(同样有strncat ) ) ) ) )。
char*Strcat(char*dest,const char * src ) ) ) ) ) ) ) ) char*Strcat(char*dest,const char * src ) )
返回dest的起始地址。 dest必须有足够的空间来存储复制的字符串
10.strncasecmp (忽略大小写比较字符串) )。
intstrncasecmp(constchar*S1,const char *s2,size_t n );
11.strtok分割字符串
char*strtok(char*s,char *delim );
将字符串分解为一系列字符串。 s是要分解的字符串,delim是分隔符字符串。 基本的处理是,strtok在s中查找delim中包含的字符,并将其替换为null( ),直到找到整个字符串。
char buff[]='abcsw21 ';
char *delim='$ ';
char*title=strtok(Buff,delim ); //title='abc '
char*address=strtok(null,delim ); //address='sw '
Char*Area=strtok(null,delim ); //area='21 '
注意:“char”buff=' ABC sw21 '; 由于strtok函数在运行时更改第一个参数的值,因此如果将buff定义为常量指针,则无法更改该值,并且在使用strtok时会出现段错误。