c连接oracle字符串函数,C语言常用的字符串函数

注意这里提到的字符串函数都需要如下这个头文件声明:

#include

一、计算字符串的长度

strlen(char*)函数求的是字符串的实际长度,如下面代码输出结果是“5”

#include

#include

int main()

{

char name[]="China";

int len;

len = strlen(name); //计算字符串name的长度

printf("字符串长度:%d\n",strlen(name));

return 0;

}

区别sizeof

sizeof不是函数,仅仅是一个取字节运算符,sizeof可以用数据类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。

二、字符串拷贝strcpy

#include

#include

int main()

{

//1、字符串拷贝

char str1[16]="China";

char str2[16]="Shanghai";

strcpy(str1,str2); //strcpy的第一个参数是目标,第二个参数是源字符串

printf("str1:%s\nstr2:%s\n",str1,str2);

return 0;

}

代码打印结果是str1 = "Shanghai"     str2 = "Shanghai"

如果是如下代码,打印结果又是怎样的呢?

char str1[16]="123456789";

char str2[16]="China";

strcpy(str1,str2);

结果是:China   为什么不是 China6789 或者 China789 呢?

因为strcpy函数会把源字符串的“字符串结束符”也一同拷贝到目的字符串中:

str1内存里面存储的是:'C'   'h'   'i'   'n'   'a'   0   '7'   '8'   '9'    (这里的0是数字0  不是字符'0')

使用printf函数打印char字符串%s时遇到“字符串结束符” 0 就停止打印了,其实str1里面还是有后面那些内容的

strcpy的特点:

把源字符串的“字符串结束符”也一同拷贝到目的字符串中,语法简单,非常方便。

strcpy的缺点:

可能导致字符串越界!不安全

char str1[8]="China";

char str2[32]="Shanghai nanjing lu";

strcpy(str1,str2);

如上面的代码,str2 拷贝到  str1 明显超出了str1定义的字符串长度,越界了,但是程序还是能执行拷贝,这个要非常注意!

三、字符串拷贝strncpy

strncpy的作用就是:拷贝指定个数的字符到指定的字符串里面

#include

#include

int main()

{

char str1[8]="1234567";

char str2[16]="China";

strncpy(str1,str2,3); //strncpy的第三个参数就是拷贝的个数

printf("str1:%s\nstr2:%s\n",str1,str2);

return 0;

}

str1输出的结果是 Chi4567   因为是截断后拷贝,所以是不把“字符串结束符”一同拷贝的

如果上面 strncpy(str1,str2,3); 函数中的3改为6,这样拷贝就会带上“字符串结束符”一同拷贝,打印的结果就会是 China

还要注意一种情况:

char str1[8]="1234567";

char str2[16]="eet";

strncpy(str1,str2,5); //str2里面的字符不够5个

打印结果是 eet (因为用 printf 打印 %s 遇到“字符串结束符” 停止了 )

所以str1里面的内容是 'e'   'e'   't'   0   0   '6'   '7'  并不是  'e'   'e'  ' t'   '4'   '5'   '6'   '7'

可以通过

printf("%c%c%c%d%d%c%c",str1[0],str1[1],str1[2],str1[3],str1[4],str1[5],str1[6]);

打印验证 str1里面的内容。

所以当strncpy的第3个参数,大于拷贝源(第二个参数)的长度+1时,(上题中的 5 > 3 + 1)则把不足部分用0填充!

四、字符串连接strcat

#include

#include

int main()

{

char dest1[64];

char dest2[64];

printf("请输入您的省份:");

gets(dest1);

printf("请输入您的城市:");

gets(dest2);

strcat(dest1,dest2); //第二个字符串拼接到第一个字符串的尾部

printf("dest1:%s\ndest2:%s\n",dest1,dest2);

return 0;

}

效果如下:

7acf0c38f303c067d18dbcb6471b50cd.png

dest2 的 "苏州" 0  拼接到了 dest1 的尾部,同时覆盖了dest1 的 末尾结束符 0   变成:"江苏苏州"  0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值