天天看点

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;

}

继续阅读