C语言字符串函数sizeof、strlen、strcpy、strcat、strcmp、strchr、strstr、sprintf

在C语言中没有C++或Java中的string这个类型来表示字符串,在C中字符串实际上是使用\0结尾的一维字符数组。
下面初始化创建了一个helloworld字符串,由于在数组的末尾存储了空字符,所以字符数组的大小比单词helloworld的字符数多一个。
char str[8] ={‘h’,‘e’,‘l’,‘l’,‘o’,‘w’,‘o’,‘r’,‘l’,‘d’,\0’};或 char str[] = “helloworld”;
字符在计算机中都是以ASCII值的形式来存储

以char str[]="helloworld"为例:

1、sizeof(str): sizeof其实是一个关键字(并不是函数),它是用来求一个存储空间的大小。sizeof(str)求str存储空间的大小其值为11(包含‘\0’这个存储空间)。

2、strlen(str): strlen()是用来求字符串长度的函数,在求长度时遇到‘\0’就结束,所以strlen(str)其值为10(不包含\0)。如果char str[10] ="helloworld"则长度不确定了,如果紧跟着字符串末尾是‘\0’则值为10,否则无法确定。

3、strcpy(str1,str2): 如果想把一个字符串赋值给另外一个字符串,不可以使用str1=str2(这是把str2字符串的首地址赋给str1字符串的首地址),而需要使用字符串拷贝函数strcpy()。如果strcpy(buf,str)把str拷贝到buf中去,这时候要注意buf要有足够的空间来容纳str,否则buf会溢出导致整个程序终止。所以这个函数不是安全的函数,一般建议使用strncpy,如:strncpy(buf,str,sizeof(buf))。

4、strcat(str1,str2): 字符串连接函数,用来将str2连接到str1后面去。对于该函数使用同样要注意str1要有足够的空间容纳这两个字符串的长度,否则溢出;建议用strncat()

5、strcmp()、strncmp()、strcasecmp()、strncasecmp():比较两个字符串的内容是否相同并不能使用str1 == str2来判断,而是使用这个几个函数来判断。其中strcmp()和strncmp()区分大小写,strcasecmp()和strncasecmp()不区分大小写。实现原理:拿第一个字符串的每一个字符与第二个字符串的相应字符做减法,如果不为0则返回差值,如果返回值为0,则表示两个字符串相同!

6、strchr(s1,ch): 查找并返回字符ch在s1中第一次出现的位置,如果没找到则返回NULL,strrhr(s1,ch)查找并返回字符ch在S1中最后一次出现的位置

7、strstr(s1,s2): 查找并返回字符串s2在s1中第一次出现的位置,如果没找到则返回NULL,如果不区分大小写查找字符串则使用strcasestr()函数

8、sprintf()、snprintf():用来格式化生成一个字符串,它的工作方式与printf()相同,只是printf把字符串打印到标准输出上,而sprintf()则输出到buf中去。例如:snprintf(sn_buf,sizeof(sn_buf),“huawei-%02d-%04d”,week,serial)。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值