【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

系统-等保三级-CentOS Linux 7合规基线检查 shell脚本

系统-等保三级-CentOS Linux 7合规基线检查 shell脚本

swindy博客 2407

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

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

个人练习生 2417

SQL Server 2025在Windows 11上的安装避坑指南

SQL Server 是微软主流关系型数据库管理系统,其安装与Windows操作系统深度耦合;Windows 11作为新一代桌面平台,强化了基于虚拟化的安全(HVCI)、驱动签名强制策略(WDAC)及内核隔离机制,导致传统数据库部署流程失效。理解二者底层交互原理,是解决服务启动失败、配置管理器无法打开、远程连接被拒等高频问题的技术前提。本文聚焦SQL Server 2025与Windows 11的兼容性挑战,覆盖系统预配置、安装节点诊断、防火墙与服务权限调优等工程实践环节,适用于高校教学、电赛备赛、中小企业

weixin_28741413的博客 319

使用Simulink对氢燃料电池与锂电池的混合储能系统进行建模

本文介绍了基于Simulink的氢燃料电池与锂电池混合储能系统建模与协同控制方法。系统通过氢燃料电池提供稳定能源,锂电池实现快速响应,结合DC-DC变换器和负载管理器实现动态调控。详细阐述了从模型创建、关键模块配置到控制器设计的完整流程,重点说明了功率分配算法和充放电控制策略的实现。通过仿真分析验证了系统在不同负载条件下的性能表现,包括响应速度、工作效率和稳定性等指标。该方案为新能源混合储能系统的设计与优化提供了实用指导,有助于提升系统可靠性和延长电池寿命。

amy_mhd的博客 314

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

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

diying4157的博客 192

WIFI和BT测试(射频工程师)

买不了吃亏买不了上当,我卖的是技能,你收获的是经验。

m0_58834499的博客 599

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

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

qq_45841205的博客 563

rk3568 Android12 增加 USB HOST 模式开关(二)

将原有 USB-C 改为 USB-A,并在设置中增加USB工作模式开关可以让用户选择USB端口的功能模式,例如充电、文件传输、或MIDI设备。用户能够灵活管理设备的连接方式,优化数据传输和设备兼容性。

weixin_35723192的博客 734

LeRobot 宇树人形机器人 G1 部署 GR00T 运动策略

本文详细介绍了Unitree G1人形机器人的完整设置流程。首先通过以太网连接机器人并进行SSH访问,然后配置WiFi网络实现无线连接。在机器人端安装LeRobot软件并运行服务器程序,最后在控制端配置IP地址并运行GR00T移动控制系统。指南涵盖了29自由度和23自由度版本G1机器人的配置方法,支持通过WiFi进行远程策略部署,提供双足行走与平衡控制功能,并详细说明了遥控器操作方式。

2506_90492529的博客 2172

【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

禾赛激光雷达AT128P/海康相机(1):ROS环境设备驱动

sudo cp *.so /opt/MVS/lib/64/ # 复制当前文件夹中所有.so文件 到 “/opt/MVS/lib/64/” 文件中。将相应的.so文件复制到 /opt/MVS/lib/64/。我解压的是x86_64的,解压之后,打开,再解压MVS。然后在上一层,也就是选择x86_64那一层打开终端。新建一个工作空间,或者打开自己的工作空间。)包放在src内,并解压,然后编译。MVS V2.1.2下载之后解压,// 驱动代码下载到src文件里面。// 特定文件夹中打开终端。

努力努力努力 882

调用字符串库函数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

【漏洞复现】Apache Tomcat远程代码执行漏洞(CVE-2024-56337)

CVE-2024-56337是一个存在于Apache Tomcat中的TOCTOU(Time-of-Check Time-of-Use)竞争条件漏洞。此漏洞源于对先前漏洞(CVE-2024-50379)的不完整修复。若默认servlet是可写的(参数readonly设置值为false,该设置为非默认设置)表示不区分大小写文件系统,在负载下并发读取和上传同一文件可以绕过Tomcat的大小写检查。攻击者可以通过构造恶意请求上传含恶意JSP代码的文件,使其触发解析并执行这些文件,从而导致远程代码执行。

李同學AI安全 3196

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言进阶栏目

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

随便写写 777

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

C语言库函数

qq_20963687的博客 986

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

字符串总结

/ 不安全,可能缓冲区溢出。// 使用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、付费专栏及课程。

余额充值