L24c语言中的字符串

来源:互联网 发布:杭州恩牛网络借壳上市 编辑:程序博客网 时间:2024/06/16 09:08

字符串

基本概念

1.概念上讲,C语言中没有字符串数据类型
2. C语言中使用字符数组来模拟字符串
3. C语言中的字符串是以’\0’结束的字符数组
4. C语言中的字符串可以分配于栈空间,堆空间或者只读存储区

#include <stdio.h>#include <malloc.h>int main(){    char s1[] = {'H', 'e', 'l', 'l', 'o'}; //字符数组    char s2[] = {'H', 'e', 'l', 'l', 'o', '\0'}; //字符串    char* s3 = "Hello"; //只读存储区,不能改变    char* s4 = (char*)malloc(6*sizeof(char));//堆空间    s4[0] = 'H';    s4[1] = 'e';    s4[2] = 'l';    s4[3] = 'l';    s4[4] = 'o';    s4[5] = '\0';    free(s4);    return 0;}

字符串长度

字符串长度 = 字符串所包含的字符的个数。
第一个’\0’字符前出现的字符个数

函数 :’strlen(a)’来获取

面试题:利用一条语句实现strlen

利用递归调用实现:

#include <stdio.h>#include <assert.h>size_t strlen(const char* s){    return ( assert(s), (*s ? (strlen(s+1) + 1) : 0) );}int main(){    printf("%d\n", strlen( NULL));    return 0;}

注意:尽量不要编写标准库中已经存在的函数

不指定长度的字符串函数

这些函数通过寻找字符串的’\0’来判断字符串长度,从而进行字符串操作

strcpy (char*, const char*);strcat (char*, const char*);strcmp (const char*, const char*)//两个字符串相同,返回值=0//1>2 ,返回值>0//2>1 ,返回值<0

面试题 :strcpy

#include <stdio.h>#include <assert.h>char* strcpy(char* dst, const char* src){    char* ret = dst;    assert(dst && src);    while( (*dst++ = *src++) != '\0' );    return ret;}int main(){    char dst[20];    printf("%s\n", strcpy(dst, "Delphi Tang!"));    return 0;}

指定长度的字符串函数

这些函数通过指定长度参数,从而进行字符串操作

char* strncpy (char*, const char*,size_t len);//复制<len时 ,剩余空间用'\0'填充//复制>len时 ,复制len个字符 ,且不用'\0'结尾char* strncat (char*, const char*,size_t len);总在结果字符串后面添加'\0'char* strncmp (const char*, const char*,size_t len)//两个字符串相同,返回值=0//1>2 ,返回值>0//2>1 ,返回值<0
0 0
原创粉丝点击