C语言学习笔记 lesson18 字符串处理函数

字符串处理函数

strlen 统计传入字符串的长度,不包括'\0'

strcat 字符串拼接,接收两个参数,把str2的所有字符拼接到str1。如果str1的长度不够大,会导致溢出

strncat  将只会拼接指定长度的字符串

strcmp  对比两个字符串是否相同,相同返回0

strncmp  对比指定的长度

strcpy  字符串的拷贝

strchr   字符串中查找第二个字符串的字符,返回值为查到的位置

strpbrk 在第一个字符串中查找第二个字符串的任意内容,返回值位置

strrchr 从字符串的末尾往前查找指定的位置,返回找到的位置

strstr    返回str2在str1中首次出现的地址

atoi   把字符串转换成整型

atof 、atol


例:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include <string.h>

#define STRLEN 255



int main()

{

char *str = "1234444555";

char strarr[] = "111222333444";

char strcarrier[STRLEN] = { 0 };



size_t szlen = strlen(strarr);

size_t arrayles = sizeof(strarr);



//strcat(str, strarr);                          //常量区中不能被修改,会出错

if ((strlen(strarr) + strlen(str) - 1 )<= sizeof(strarr))

{

strcat(strarr, str);                        // 长度不够,会破坏后面的空间

}

strcat(strcarrier, str);

strcat(strcarrier, strarr);



memset(strcarrier, 0, STRLEN);            // 作用于内存 ,对内存进行连续的赋值



strncat(strcarrier, str, 5);

strncat(strcarrier, str, STRLEN-strlen(strcarrier));



memset(strcarrier, 0, STRLEN);



strcpy(strcarrier, strarr);                   // 完全复制,清空原来的值,再赋值。不会出现内存的问题

int temp = strcmp(strcarrier, str);  //二者不同返回非0 的值

temp = strcmp(strcarrier, strarr);



temp = strncmp(strcarrier, "333", 5); //取第二个字符串的前几位进行比较

temp = strncmp(strcarrier, "111", 3);



memset(strcarrier, 0, STRLEN);

strcpy(strcarrier, str);

temp = strchr(strcarrier, '4');           //返回一个指针,返回4在字符串中的地址

temp = strrchr(strcarrier, '4');        //倒序查找

temp = strstr(strcarrier, "455");    // 有返回首地址,没有返回空指针



temp = atoi(strcarrier);  // 转换成int



char *end = NULL;

memset(strcarrier, 0, STRLEN);

strcpy(strcarrier, str);

temp = strtol(strcarrier, &end, 10);    // 指定进制

temp = strtol(strcarrier, &end, 16);



memset(strcarrier, 0, STRLEN);

strcpy(strcarrier, "11122str11");

temp = strtol(strcarrier, &end, 16);   //temp的值为11122 &end里为str11



strcpy(strcarrier, "");

sprintf(strcarrier, "%d", temp);

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值