【C语言进阶】字符串处理函数的介绍

C语言处理字符串完整版 【代码】C语言处理字符串完整版。 阅读详情

目录

前言:

一、字符串处理函数介绍:

1.strlen函数:

2.strcpy函数:

3.strcat函数:

4.strcmp函数:

5.strncpy函数:

6.strncat函数:

7.strncmp函数:

8.strstr函数:

9.strtok函数:

10.strerror函数:

11.memcopy函数:

12.memmove函数:

13.memcmp函数:

二、总结:


前言:

        本文我们将进入对字符串处理函数的学习,重点介绍处理字符和字符串的库函数的使用和注意事项。

一、字符串处理函数介绍:

      C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串或字符数组中。其中,字符串常量是用于那些对它不修改的字符串函数。

1.strlen函数:

        相信大家对strlen函数已经不陌生,在C语言初阶我们就经常使用这个函数了。

4cd5f613ea7a4d4e94d520fdfb38d19d.png

         strlen函数(string length)的作用是用于返回字符串结束标志‘\0’之前出现的字符个数,因此,strlen函数处理的字符串对象必须是以结束标志‘\0’结尾的字符串。其返回值类型是size_t类型,也就是无符号类型。

下面是strlen函数的基本使用方法:

#include<stdio.h>
#include<string.h>

int main()
{
    char arr1[] = "hellow";
    char arr2[] = { 'h','e','l','l','o','w','\0' };
    char arr3[] = { 'h','e','l','l','o','w' };
    
    int len1 = strlen(arr1);
    int len2 = strlen(arr2);
    int len3 = strlen(arr3);

    printf("%d ", len1);
    printf("%d ", len2);
    printf("%d ", len3);

    return 0;

}

该代码输出结果如下:

43fcc7552e9e4f648d7cbdca0b27a8d1.png

        我们使用字符型数组将字符串存储起来,接着使用strlen函数计算字符串‘hellow’中所有字符的数量(使用双引号初始化字符串时,编译器自动在最后面加上‘\0’),并可以可以使用一个整形变量接收strlen函数的返回值,进行打印。当没有结束标志时候,strlen会一直读下去,这也就是len3=33的原因。

        并且我们还说到,strlen函数的返回类型为无符号数,因此strlen函数不可以直接用来比较两个字符串的大小;例如:

#include<stdio.h>
#include<string.h>

int main()
{
    char arr1[] = "hellow";
    char arr2[] = "hel";
   
    if (strlen(arr2) - strlen(arr1)>0)
    {
        printf("arr2>arr1");
    }
    else
    {
        printf("arr2<arr1");
    }
    return 0;

}

        按照我们正常思路是3-6为-3,然后会执行else语句。但实际上:

0391c1e696e94d8ba43cbd8f27b9c21c.png

         这是因为strlen函数的返回类型是无符号类型,得出的结果也是无符号类型,于是原本第一位即符号位上的数字也将被作为数据的一部分,因而实际得出的结果是一个非常大的整数,也就是大于0,也就执行了if语句。

        如果你实在要比较大小的话,这边介绍两种方式:

方式一:

//用两个变量先存起来
#include<stdio.h>
#include<string.h>

int main()
{
    char arr1[] = "hellow";
    char arr2[] = "hel";
   
    int len1 = strlen(arr1);
    int len2 = strlen(arr2);

    if (len2-len1>0)
    {
        printf("arr2>arr1");
    }
    else
    {
        printf("arr2<arr1");
    }
    return 0;

}

方式二:

#include<stdio.h>
#include<string.h>

//强制类型转换
int main()
{
    char arr1[] = "hellow";
    char arr2[] = "hel";
   
    if ((int)strlen(arr2) - (int)strlen(arr1)>0)
    {
        printf("arr2>arr1");
    }
    else
    {
        printf("arr2<arr1");
    }
    return 0;

}

2.strcpy函数:

        在之前的学习中,strcpy函数也是我们经常使用的字符串处理函数之一。

10802c2f08ca490fa1d9d4973f0a5c3a.png

        strcpy函数(string copy)的作用是:可以将字符串从源地址复制到目的地址,通俗来讲就是用来实现字符串的复制和拷贝。并且它会将源地址内的结束标志‘\0’一并拷贝过去,因此源地址必须以‘\0’一并拷贝过去,因此源地址必须以‘\0’结尾,且目的地址也将以结束标识符结尾 。而且,因为其作用拷贝字符串,因此目标地址的空间必须足够大,必须有足够大的空间容纳下源地址内字符串,同时目的地址的空间必须是可变的,可修改的。

        下面是strpy函数的基本使用方式:

#include<stdio.h>
#include<string.h>

int main()
{
    const char arr1[] = "hellow";
    const char arr2[10] = { 0 };

    printf("%s\n", arr1);
    printf("%s\n", arr2);

    //strcpy(目的地址,源地址);
    strcpy(arr2, arr1);
    
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;

}

        我们初始化字符数组arr中的内容,并使arr2中内容为空。首先我们将两个字符串进行打印,验证拷贝前两字符串中的存储内容。接着我们使用strcpy函数将字符数组arr1中的字符串拷贝至arr2中,并在此之前打印两数组中的内容对拷贝结果进行验证。

        我们要特别注意的是strcpy函数返回的是目标空间的起始地址,该函数设置返回值类型的实现链式访问。(以后会讲到,这里仅做了解)。

3.strcat函数:

        这个字符串处理函数就比较陌生了,在我们之前的学习中没有用到过,,甚至见都没有见过。

5520cc4e0d4c4e68ad379ef9a59d8242.png

        strcat函数(string catenate)的作用是:将源地址的字符串追加到目的地址。与字符串拷贝函数相同,它在进行补充追加时是从目的地址的结束标识符‘\0’开始追加的,追加至源地址的结束标识符停止的。且它同样要求目标地址内的空间必须足够大,要有足够的空间容纳下源地址内字符串,同时目的地址的空间必须是可变的、可修改的。

        下面是strcat函数的基本使用方式:

#include<stdio.h>
#include<string.h>

int main()
{
    const char arr1[20] = "hellow ";
    const char arr2[20] = "world";

    printf("%s\n", arr1);
    printf("%s\n", arr2);

    //strcat(目的地址,源地址);
    strcat(arr1, arr2);
    
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;

}

        我们同样首先定义并初始化两个字符数组,接着打印他们验证他们各自内部的存储内容。然后通过是用strcat函数,我们将字符数组arr2中的内容,成功的追加补充倒了字符数组arr1中,并再次进行打印,验证追加补充的结果。

        注意,strcat函数无法追加自己。原因很好理解,我们在定义是就已经固定了字符数组的储存空间了,当追加自己时,相当于将自己与自己相同大小的字符数组,即两倍自身大小的数据放入自己的储存空间,可想而知一定是不可行的。

4.strcmp函数:

        dc3a7acff043435d8e2f6c2c2cad7e71.png

        strcmp函数(string compare)的作用是:按照顺序依次比较两字符串对应位置字符的ASCII码值(注意不是比较两字符串的长度哦),直到结束标识符‘\0’或对应位置的字符不同。若比较到结束标识符都没有不同则字符串相等,若两字符串对应位置字符有不同,谁的ASCII码值小,那个ASCII码值小的字符比较小。

同样的我们来看看strcmp的基本使用方式:

#include<stdio.h>
#include<string.h>

int main()
{
    const char arr1[20] = "abc";
    const char arr2[20] = "abz";

    int ret = strcmp(arr1, arr2);
    //如果arr1大于arr2,则返回大于0的数;
    //如果arr1等于arr2,则返回等于0的数;
    //如果arr1小于arr2,则返回小于0的数;

    if (ret > 0)
    {
        printf("arr1>arr2");
    }
    else if (ret == 0)
    {
        printf("arr1=arr2");
    }
    else
    {
        printf("arr1<arr2");

    }
    
    return 0;

}

        首先我们定义并初始化两个字符数组,接着对两个数组进比较,根据strcmp函数的比较结果得到返回值,再根据返回值反馈我们想要的字符串比较结果。

        这里的要点是:该函数的作用并不是比较字符串的长短,而是比较对应位置字符ASCII码值的大小。

5.strncpy函数:

c577a3f58ff343ecbbc6c6903c37a837.png

        strncpy函数(string number copy)的作用是:将指定长度的字符串复制到字符数组中,即表示把源地址中字符串开始的前n个字符拷贝到目的地址中。与strcpy相同,它同样会将源地址内的结束标识符‘\0'一并拷贝过去,因此源地址必须以’\0‘结尾,且目的地址也将以结束标识符结尾。并且因为其作用为拷贝字符串,所以目标地址内的空间必须足够大,要有足够的空间容纳下源地址内的字符串,同时目的地址空间必须是可变,可修改的。 

下面来看strncpy函数的基本使用方式:

#include<stdio.h>
#include<string.h>

int main()
{
    const char arr1[] = "hellow";
    const char arr2[10] = { 0 };

    printf("%s\n", arr1);
    printf("%s\n", arr2);

    //strcpy(目的地址,源地址,拷贝个数);
    strncpy(arr2, arr1,3);

    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;

}

        我们看到,使用该函数,我们成功的将字符数组arr1中前3个字符拷贝到字符数组arr2中,并且通过前后两次打印的打印验证了按指定长度拷贝操作完成。

ps:若源字符串的长度小于我们传递过去的参数,则拷贝完源字符串之后,将在后面加字符'\0',直至拷贝够参数规定的个数。

6.strncat函数:

00178ae0104f43f1973eee9719041478.png

        strncat函数(string number catenate)的作用:从源地址处将指定长度的字符串追加到目的地址中。与strcat类似,他在进行补充追加时,也是从目的地址的结束标识符'\0'开始追加的,不同的是追加到参数限制的字符数出停止。 但它同样要求目标地址内的空间必须足够大,要有足够的空间容纳下追加的字符串,同时目的地址的空间必须是可变的、可修改的。

strncat的基本使用方式:

#include<stdio.h>
#include<string.h>

int main()
{
    const char arr1[20] = "hellow ";
    const char arr2[20] = "world";

    printf("%s\n", arr1);
    printf("%s\n", arr2);

    //strcat(目的地址,源地址,追加个数);
    strncat(arr1, arr2,3);

    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;

}

        首先我们定义并初始化两个字符数组,接着打印追加前他们各自的内容,然后我们使用strncat函数有限制的从数组arr1向arr2追加了3个字符,最后进行打印验证。

7.strncmp函数:

65e5bc101e6a41f4a195ec5bd4fcf7c2.png

 strncmp函数(string number compare)的作用是:有限制的按照顺序依次比较两字符串对应位置字符的ASCII码值(注意不是比较两字符串的长度哦),直到参数限制数位置上的字符都比较结束或对应位置的字符不同。若参数限制位数位置上的字符都比较结束且都没有不同则两字符串相等,若两字符串对应位置字符有不同,谁的ASCII码值小,那个ASCII码值小的字符比较小。

下面是strncmp函数的基本使用方式:

#include<stdio.h>
#include<string.h>

int main()
{
    const char arr1[20] = "abcdef";
    const char arr2[20] = "abz";

    int ret = strncmp(arr1, arr2,3);
    //如果arr1大于arr2,则返回大于0的数;
    //如果arr1等于arr2,则返回等于0的数;
    //如果arr1小于arr2,则返回小于0的数;

    if (ret > 0)
    {
        printf("arr1>arr2");
    }
    else if (ret == 0)
    {
        printf("arr1=arr2");
    }
    else
    {
        printf("arr1<arr2");

    }

    return 0;

}

        其作用原理与作用过程跟strcmp十分类似,唯一不同便是限制了比较的字符数,所以就不过多阐述了。

8.strstr函数:

      8682146a00a744c8b21f2b2dd04ec5e9.png  

strstr函数(string string)的作用是:从一个字符串中寻找其字符串,通俗来讲就是从一个字符串中寻找另外一个字符串。若找到目标字符串则返回指向目标字符串的指针,若没有找到则返回空指针 。

我们来看看strstr函数的基本使用方式:

#include<stdio.h>
#include<string.h>

int main()
{
    const char arr1[20] = "abcdef";
    const char arr2[20] = "cd";

    //从arr1中找arr2;
    char* ps = strstr(arr1, arr2);

    if (ps == NULL)
    {
        printf("没找到\n");
    }
    else
    {
        printf("找到了:%s", ps);
    }

    

    return 0;

}

        我们定义并初始化了两个字符数组,并使用strstr函数进行字符串寻找,并使用了字符型指针接收函数的返回值,最后对接受了返回值的指针ps进行判断,若为空则为没有从数组arr1找到字符串arr2,反之则会找到了。

9.strtok函数:

46be62ef885641309f35c898fe333505.png

        strtok函数(string token)的作用是:将字符串分解为一组字符串。听起来有点懵,实际很简单。该函数有两个数组作为参数,他的实际作用便是将其中一个数组组为分割数组,在另一个数组中寻找这些“分割符”,并在分隔符处将这个数组内的字符串加上结束标识符'\0',将其分割成一组(多个)字符串。若第一个参数不为NULL;将找到字符数组中的第一个标记并保存他在字符串中的位置;若第一个参数为NULL,将在同一个字符串中被保存的位置开始,查找下一个标记。如果字符串中不存在更多的标记,则返回 NULL 指针。

下面是strtok函数的基本使用方式:

#include<stdio.h>
#include<string.h>
 
int main()
{
	char arr1[] = "1254594572@QQ.COM";
	char arr2[30] = { 0 };
	strcpy(arr2, arr1);
 
	const char* arr3 = "@.";
 
	printf("账号:%s\n", strtok(arr2, arr3));
	//找到第一个标记停止
	printf("服务商:%s\n", strtok(NULL, arr3));
	//从保存好的位置开始往后找
	printf("网址后缀:%s\n", strtok(NULL, arr3));
	//从保存好的位置开始往后找
 
	return 0;
}

        首先我们要知道,strtok 函数是会对数组本身进行操作的,所以我们为了保护原始数据,在定义并初始化好字符数组之后,又定义了一个新的数组并将原始数据拷贝过去,作为临时拷贝供我们进行操作。接着我们定义并初始化了分割符数组,函数将根据分割符数组 arr3 对 临时拷贝 arr2 进行分割。第一次执行函数时之前没有标记,于是直接进行操作找到第一个标记并分割打印。此时就已经存在标记了,再连续两次找到前一次执行作下的标记按照分割符将数组分割完毕并打印。
        但是上面的代码风格较为简陋、复杂,我们可以将上面段代码优化为:

#include<stdio.h>
#include<string.h>
 
int main()
{
	char arr1[] = "1254594572@QQ.COM";
	char arr2[30] = { 0 };
	strcpy(arr2, arr1);
 
	const char* arr3 = "@.";
 
	char* str = NULL;
	for (str = strtok(arr2, arr3); str != NULL; str = strtok(NULL, arr3))
	{
		printf("%s\n", str);
	}
 
	return 0;
}

ps:若字符串中不存在更多的标记,则返回 NULL 指针。

10.strerror函数:

ffac4da78a99485581c730e832f3f151.png

         strerror函数(string error)的作用:返回错误码对应的信息。即根据接收到的错误码(错误码errno为全局变量),返回错原因的详细信息。

下面是strerror函数的基本用法:

int main()
{
    int i = 0;
    for (i = 0; i <= 4; i++)
    {
        printf("错误原因:%s\n", strerror(i));
    }
    return 0;
}

11.memcopy函数:

8f90992d341241bda5ba88ac9f8f8ac4.png

memcpy函数(memory copy)的作用:从源内存空间向目的内存空间拷贝限制数量(单位是字节)的数据。它与 strcpy 函数类似,作用均为拷贝数据,不同的是 strcpy 仅仅只操作字符串故会在结束标识符 ' \0 ' 处停止,而 memcpy 函数操作的是内存,内存中的数据是相邻的,故不会在结束标识符处停止。

下面是memcpy函数的基本用法:

#include<stdio.h>
#include<string.h>

int main()
{
    int arr1[] = { 1,2,3,4,5,6 };
    int arr2[5] = { 0 };

    for (int i = 0; i < 5; i++)
    {
        printf("%d ", arr2[i]);
    }
    printf("\n");
    //mencpy(目的地址,源地址,拷贝的大小)
    memcpy(arr2, arr1, 16);

    for (int i = 0; i < 5; i++)
    {
        printf("%d ", arr2[i]);
    }
    return 0;
}

         我们首先创建并初始化了两个整形数组,接着打印出数组 arr2 内数据的存放情况。紧接着我们通过内存拷贝函数,将数组 arr1 内的前20个字节的数据拷贝给了 arr2数组。整型数组内每个数据元素所占的内存空间为4个字节,20个字节即将数组 arr1 中的前五个数据元素拷贝给了数组 arr2。最后再次打印数组 arr2 中的数据,验证拷贝结果。

ps:如果源内存空间和目标内存空间有任何重叠,复制的结果都是未定义的。

12.memmove函数:

c9df8557d883487b9a228df6ae0ef1ce.png

         memmove函数(memory move)的作用:弥补 memcpy 函数的不足,主要用于处理内存的重叠部分。即如果源空间和目标空间出现重叠,就得使用 memmove 函数来进行处理。

下面是memmove函数的基本用法:

#include<stdio.h>
#include<string.h>

int main()
{
    int arr1[] = { 1,2,3,4,5,6,7,8,9 };
    

    for (int i = 0; i < 7; i++)
    {
        printf("%d ", arr1[i]);
    }
    printf("\n");
    //mencpy(目的地址,源地址,拷贝的大小)
    memmove(arr1 + 2, arr1, 20);

    for (int i = 0; i < 7; i++)
    {
        printf("%d ", arr1[i]);
    }
    return 0;
}

        这个函数与 memcpy 函数除处理对象不同外,语法结构和使用场景等都极其类似,这里也就不再做过多赘述。

13.memcmp函数:

275b55d55c8b436b82db79ef8330c98f.png

         memcmp 函数(memory compare)的作用与 strcmp 函数的作用类似,不过 memcmp 函数是从内存的角度以字节为单位进行处理,故 memcmp 函数同样需要第三个参数进行限制,而不会在结束标识符 ' \0 ' 处停止比较。其它方面也就不再做过多赘述。 

memcmp 函数的基本使用方式:

#include<stdio.h>
#include<string.h>
 
int main()
{
	int arr1[] = { 1,2,3,4,5,6,7,8,9 };
	int arr2[] = { 1,2,3,4,5,9,6,7,8 };
 
	int ret = memcmp(arr2, arr1, 24);
 
	if (ret > 0)
	{
		printf("arr1 < arr2\n");
	}
	else if (ret == 0)
	{
		printf("arr1 = arr2\n");
	}
	else
	{
		printf("arr1 > arr2");
	}
 
	return 0;
}

二、总结:

        本文到此就结束了,主要为大家整理并讲解了常用字符串操作函数,希望对大家有所帮助,同时本文仍有许多不足之处,欢迎各位小伙伴们随时批评指正!

C语言的字符串处理 在C语言中,字符串是以字符数组的形式存储的一串字符。字符串以一个特殊的字符结束,称为空字符('\0'),它用来标识字符串的结束。c// 定义一个容量为100的字符数组C语言中的字符串处理是其编程语言特性的重要组成部分。虽然字符串在C语言中并不是一种原生数据类型,但通过字符数组及其标准库函数,我们能够进行丰富的字符串操作。掌握这些基本操作和标准库函数,对于开发各种应用程序都是十分重要的。本文简单介绍了字符串的定义、基本操作、标准库函数,以及一些常见的操作示例。 阅读详情

相关推荐

【C语言】字符串操作函数详解

这些头文件提供了字符串操作所需的函数声明。以下是常用字符串操作函数的详细讲解,包括每个函数的参数、返回值说明以及示例代码。每个函数的使用说明还包括了适当的表格以帮助理解其功能和用法。

LuckiBit 1927

常用的8种字符串处理函数

常用的8种字符串处理函数

qq_45890458的博客 7130

Nvidia Jetson CH340 驱动安装

最近调一个USB设备,Windows系统上是可以安装CH340 驱动使用的,移到Jetson AGX Orin 上发现没有 /dev/ttyUSB* 设备显示。是一个为盲人和视力障碍者提供的终端设备驱动程序,它会在系统启动时自动加载并占用串口设备,导致我们无法正常使用部分串口设备。安装完后,内核中已经有。

Vulcan_S的博客 1639

C语言学习(四)——字符串处理函数

字符串处理函数(17个) 1) gets() #include<stdio.h> char*gets(char*s); 功能: 从标准输入读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件结尾为止。 参数: s:字符串首地址 返回值: 成功:读入的字符串 失败:NULL gets(str)与scanf(“%s”,str)的区别: ge...

个人练习生 2417

光学仿真案例(4) 基于纳米微粒激发平面波的米氏散射FDTD仿真模拟

本案例展示了一个基于纳米粒子激发平面波的米氏散射仿真模型(mie scattering),计算其散射和吸收截面、局域场增强和远场散射分布,同时将截面和远场结果与解析解进行了比较,验证了仿真模拟的准确性。

q895235273的博客 3593

YOLOv8_obb的C++工程部署实战:从模型转换到实时视频推理

本文详细介绍了YOLOv8_obb模型在C++环境下的完整工程部署流程,涵盖从PyTorch模型到ONNX格式的转换、基于ONNX Runtime的C++推理引擎搭建、旋转框后处理解析,以及实时视频流处理与性能优化。文章重点解析了模型转换的关键参数、环境配置的常见问题、核心推理代码的实现,并提供了实用的避坑指南,旨在帮助开发者高效完成YOLOv8_obb的C++工程部署。

weixin_29100927的博客 45

[总结] C字符串常用处理函数

C字符串常用处理函数 C的字符串一直是我很头疼的一个东东,所以自己总结一下 Char* 字符串数组 所有函数都是带入地址,也就是可以指定开始位置 -->strlen() 顾名思义,返回字符串数组的长度,但是它是以O(n)的效率计算的,所以尽量不要写成 for(int i=0;i<strlen(a);i++) 这样如果多了的话,时间会大大降低,可以用...

diying4157的博客 192

C#面试题及详细答案120道(61-75)-- 多线程与异步

本文摘要了前后端面试题中关于线程与并发的核心知识点,包括线程与进程的区别(61题)、Thread/ThreadPool/Task的对比(62题)、线程安全实现方法(63题)、lock关键字的原理(64题)、Monitor类的进阶用法(65题)以及死锁的成因与避免(66题)。通过C#代码示例和表格对比,清晰展示了多线程编程的关键概念、应用场景及常见问题解决方案,适合开发者快速掌握面试高频考点。完整内容可访问专栏目录获取更多技术面试题解析。

大剑师兰特的GIS世界 1430

C语言进阶——字符串函数

C语言进阶——字符串函数 都在头文件“#include<string.h>”中。 1.strlen函数——测字符串长度,遇到‘\0’停止。返回值为一个无符号整型。 函数原型:size_t strlen( const char *string ); 函数参数:字符类型指针(也就是字符串的首地址)——char * 2.strcpy函数——字符串拷贝。 函数参数(2个):目标字符串(strDestination)地址和源字符串(strSource)地址,返回值为目标字符串地址。 函数原型:char *

qq_45841205的博客 563

最详细的 SAP ABAP Web Service 创建和消费步骤讲解

本文原版发表于 SAP 官方社区,当时用的英文版写作,标题为:Step by step to create, consume and trace web service in ABAP system https://blogs.sap.com/2014/05/20/step-by-step-to-create-consume-and-trace-web-service-in-abap-system/ 总共阅读量超过 18 万。 How to create web service provider in A

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3151

关于UMI设备采集数据的模型训练方法

模仿学习如专家模型、VLA模型,ACT、DP、openpi等算法模型训练时,都是使用的机器人的绝对位姿或关节角;而UMI记录的轨迹是相对于UMI起始点的,可以理解为是相对于起点的绝对增量,对应到机器人中就是相对于末端TCP的增量。在用模型进行训练时,当然可以,但这样进行模型训练的话达不到跨本体的能力,因为模型本身还是学习的基于机器人base坐标系的绝对位姿关系,倘若用这种方式进行处理,则UMI可以理解为是一个遥操的方法,本质还是记录的机器人的state。在看了和。

boss-dog 421

【C语言】字符/字符串+内存函数

Ⅰ、字符函数和字符串函数 1.strlen 2.strcpy 3.strcat 4.strcmp 5.strncpy 6.strncat 7.strncmp 8.strstr 9.strtok 10.strerror 11.字符函数 12. 字符转换函数 Ⅱ、内存函数

2301_77438812的博客 838

大厂面试级C#上位机完整项目(终极版):工业级Modbus协议封装 + 标准多线程采集 + 全链路异常处理

(Modbus统一通信接口)、(采集服务接口)职责:定义所有核心操作的标准接口,屏蔽底层差异(RTU/TCP、串口/TCP),面向接口编程的核心体现。新增协议/采集方式,只需实现接口,核心代码零改动。/// 自定义Modbus通信异常类 - 大厂标准,区分通信异常和其他异常/// 包含异常信息+内部异常,可溯源完整错误堆栈,面试必写本次项目是对标大厂工控上位机岗位的终极版实战项目,所有代码、架构、设计都遵循大厂标准,覆盖了面试官考察的所有核心考点✅ 纯手写Modbus协议,体现你对协议底层的吃透。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 858

调用字符串库函数c语言,C语言字符串库函数的实现

1.strlen(字符串的长度)size_t Strlen(const char* str){assert(str);for (size_t i = ;; ++i){if (str[i] == '\0')return i;}}size_t StrlenByRecursion(const char* str){return *str == '\0' ? : StrlenByRecursion(st...

weixin_39868248的博客 753

优快云独家首发!万字长文,YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程!小白也能看懂!掌握了这个就掌握了魔改YOLO的核心!

🍀🍀🍀YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程,全网最强,学不会算我输!!!

Coding... 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C语言进阶栏目

C语言知识点汇总!望对各位道友有所帮助!

随便写写 777

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C语言 详解字符函数和字符串函数以及实现

C语言库函数

qq_20963687的博客 986

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

字符串总结

/ 不安全,可能缓冲区溢出。// 使用strtok函数。

SZHaxn的博客 909

c语言比较xy大小指针,C语言教案8-指针

《C语言教案8-指针》由会员分享,可在线阅读,更多相关《C语言教案8-指针(23页珍藏版)》请在人人文库网上搜索。1、,C语言程序设计,第8章指针,.,地址和指针,在计算机中,内存是用来存储程序和数据的部件。为了便于存储,通常把内存划分成许多个存储单元,并且对存储单元进行编号,存储单元的编号称为地址。地址通常以字节为单位进行编址。在C语言中地址是指数据在内存中存放的起始位置,如:变量(整型、浮点型...

weixin_39621860的博客 414

17个C语言字符串处理函数

17个C语言字符串处理函数

CltCj的博客 1万+

C语言基础之字符串处理函数

出现的字符 c​ 返回:​ 成功返回地址​ 失败返回NULL。

qq1074237849的博客 2522

【C语言】字符串处理函数

字符串拷贝函数strcpy,strncpy。字符串拼接函数strcat,strncat。字符串比较函数strcmp,strncmp。字符串格式化输入,输出函数sprintf,sscanf。字符串查找函数strchr 查找字符,strstr 查找子串。字符串分割函数strtok。字符串转化atoi,atof,atol。需要头文件 #include

2301_80035097的博客 1420

C语言常用字符串处理函数(一)

C语言常用字符串处理函数(一) 我们经常会遇到要用C语言来直接处理字符串,了解这些函数,编写起代码来能够事半功倍,这也是字符串处理的基础。

Allen Junyu 1万+

【C语言】常见的字符串处理函数

本篇文章为大家详细讲解C语言中常用的几种字符串处理函数及其用法,让我们一起来学习吧!

m0_65292176的博客 3164

C语言之字符串处理函数

函数功能:在字符串中查找给定字符的最后一次匹配,也就是在字符串str中查找字符c最后一次出现的位置返回值:最后一次匹配位置的指针if (ptr)elseif (ptr)elsegetch();return 0;运行结果是:注意:本例程中,如果字符串中只有一个’o’字符,那么无论调用哪种字符串中字符匹配函数都会返回相同的结果。

上善若泪 1771

C语言字符串处理函数总结

使用这些函数时,记得写头文件 #include<string.h> char str1[] = "Hello World!"; char str2[] = "Hello milk!"; 1、strcpy 原型:strcpy(str1,str2); 功能:将str2中的字符串复制到str1中。 返回:str1 strcpy(str1, str2); printf("%s\...

qq_36798713的博客 9996
上一篇: 【C语言进阶】详谈指针
下一篇: 【C语言进阶】详解结构体
情缘晓梦.
博客等级 码龄4年 103粉丝 52原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值