字符串操作函数 strcpy strcat sprintf

strcpy

原型声明:char strcpy(char dest, const char *src);
头文件:#include

char* strcpy(char* des,const char* source)
{
  char* r=des;
  assert((des != NULL) && (source != NULL));
 while((*r++ = *source++)!='\0');
 return des;
}

strlcpy

头文件引用:#include <string.h>
函数原型声明:size_t strlcpy(char *dst, const char *src, size_t size)
函数参数:dst为 目的字符串开始的指针,src为 源字符串的开始地址,size代表 dst字符串的大小
功能: 在 已知 dest缓冲区大小 并不会造成缓冲区溢出前提下,将src地址开始的字符串复制到以dest开始的地址空间
返回值:src字符串的大小

代码实例:

#include <string.h>
#include <stdio.h>
int main()
{
    char buf[5];
    char src[10] = "12345678";
    strlcpy(buf, src, sizeof(buf));
    printf("%s\n",buf);//输出1234
    return 0;
}

上述示例中buf字符串最终结果是 “1234\0” ,以结束字符 ‘\0’ 结尾

类似的函数还有strncpy,但是strlcpy常常是更加安全地选择,因为strlcpy在复制之后dst字符串一定会以’\0’字符结尾。代码说明如下

#include <string.h>
#include <stdio.h>
int main()
{
    char buf[5];
    char src[10] = "12345678";
    strncpy(buf, src, sizeof(buf));
    printf("%s\n",buf);
    return 0;
}

这个时候buf最终结果就是”12345”,并没有以结束字符结尾。

strcmp

头文件:#include <stdio.h>#include <string.h>
函数原形声明: int strcmp(const char *s1,const char *s2);
说明: 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。
1. 当s1

sprintf

头文件: #include <stdio.h>
函数原形: int sprintf( char *buffer, const char *format, [ argument] … );
参数列表:
1. buffer: char型指针,指向将要写入的字符串的缓冲区。
2. format:格式化字符串。
3. [argument]…:可选参数,可以是任何类型的数据。
返回值:返回写入buffer 的字符数,出错则返回-1.

sprintf格式的规格如下所示: ([]中的部分是可选的)
%[指定参数][标识符][宽度][.精度]指示符
* 若想输出 % 本身, 使用 %% *

转换字符
%% %号。
%c 字符。
%d 十进制。
%f 浮点数。
%o 八进制。
%s 字符串。
%x 小写十六进制。
%X 大写十六进制。

以 %08.2f 为例 解释:
% 开始符
0 是 “填空字元” 表示,如果长度不足时就用0来填满。
8 格式化后总长度
2f 小数位长度,即2位

$money = 123.1
$formatted = sprintf ("%08.2f", $money);   //此时变数 $ formatted 值为 "00123.10"

strstr

strstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
注意:
1. search若是数字,所搜索的将是该数字(作为ASCII码)代表的字符。
2. 该函数对大小写敏感。如需进行大小写不敏感的搜索,请使用 stristr()

实例:
echo strstr("Helloworld!","world");
输出:world!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值