C语言基础系列--字符串有关内容

本文详细介绍了C语言中处理字符串的各种方法,包括char *、char [n]、char []的区别,以及strcpy、strncpy、strdup、strcat、strncasecmp、strtok、sprintf等函数的使用和注意事项。
摘要由CSDN通过智能技术生成

1.char *

char *buff="orisun";

sizeof(buff)=4  用32位存放一个指针

strlen(buff)=6  strlen返回字符串的实际长度,不包括末尾的'\0'

2.char [n]

char bu[100]="orisun";  从第7位到第100位都是'\0'

sizeof(bu)=100   bu是一个数组,sizeof返回数组的长度

strlen(bu)=6    strlen返回字符串的实际长度,不包括末尾的'\0'

但注意在printf("%s\n",bu);之前必须先bu[100]='\0';

3.char[]

char bu[]="orisun";  首先bu是一个数组,它的长度由 "orisun"的长度决定, sizeof(bu)=7

我们知道数组在第1次出现时必须指明长度,因为在编译时编译器就要为它分配空间,所以下面的写法是不能通过编译的:

char bu[];

 bu="orisun";

4.不能把const char*赋给char *

const char*的含义并非是指针不可被修改,而是指针指向的内容不可被修改,因此,当把一个const  char*赋给一个char*,结果就导致原来加那个const的目的形同虚设,一点意义也没有了。

5.可以把const char赋给char

基本类型的“赋值”,也就是拷贝一个值而已,拷贝之后,不管你对后面的那个char怎么修改,都不会影响原先那个const  char

6.可以strcpy(char*,const char*)

表头文件 #include<string.h>

定义函数 char*strcpy(char *dest,const char *src);

函数说明 strcpy()会将参数src字符串拷贝至参数dest所指的地址。

返回值返回参数dest的字符串起始地址。

附加说明如果参数dest所指的内存空间不够大,可能会造成缓冲溢出(bufferOverflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代。

7.strncpy

定义函数   char* strncpy(char *dest,const char *src,size_t n);

函数说明   strncpy()会将参数src字符串拷贝前n个字符至参数dest所指的地址。

8.strdup复制字符串

定义函数    char* strdup( const char *s);

函数说明    strdup()会先用maolloc()配置与参数s字符串相同的空间大小,然后将参数s字符串的内容复制到该内存地址,然后把该地址返回。该地址最后可以利用free()来释放。

所以strdup和strcpy的区别在于:使用strdup目标指针不需要&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值