【C】字符串函数和内存函数的介绍

这篇具有很好参考价值的文章主要介绍了【C】字符串函数和内存函数的介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

字符串函数

求字符串长度

strlen

size_t strlen ( const char * str );

字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )。
参数指向的字符串必须要以 ‘\0’ 结束。
注意函数的返回值为size_t,是无符号的( 易错 )

代码演示:

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

int main()
{
	char arr[] = "abcdef";
	printf("%d", strlen(arr));
	return 0;
}

运行结果:

【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

长度不受限的字符串函数

strcpy

char* strcpy(char * destination, const char * source );

源字符串必须以 ‘\0’ 结束。
会将源字符串中的 ‘\0’ 拷贝到目标空间。
目标空间必须足够大,以确保能存放源字符串。
目标空间必须可变。

代码演示:

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

int main()
{
	char arr[] = "xxxxxxxxxxxxxx";
	char str[] = "123456";
	strcpy(arr, str);
	printf("%s", arr);
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

strcmp

int strcmp ( const char * str1, const char * str2 );

第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

这里的比较是一个字符一个字符比较的。
代码演示:

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

int main()
{
	printf("%d\n", strcmp("abcc", "abcd"));
	printf("%d\n", strcmp("abcd", "abcd"));
	printf("%d\n", strcmp("abce", "abcd"));

	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

strcat

char * strcat ( char * destination, const char * source );

源字符串必须以 ‘\0’ 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。

这个函数是在字符串后面追加一个字符串。
代码演示:

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

int main()
{
	char arr[20] = "hello ";
	char str[] = "world";
	printf("%s\n", strcat(arr,str));
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

长度受限的字符串函数

这里的受限制是我我们自己可以指定拷贝的字节数,或追加的字节数,或比较的字节数。

strncpy

char * strncpy ( char * destination, const char * source, size_t num );

这里比strcpy多了一个参数,来指定拷贝的大小

拷贝num个字符从源字符串到目标空间。
如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。

代码演示:

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

int main()
{
	char arr[] = "xxxxxxxxxxxxxxxx";
	char str[] = "123456";
	printf("%s\n", strncpy(arr, str, 3));
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

strncmp

int strncmp ( const char * str1, const char * str2, size_t num );

比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

代码演示:

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

int main()
{
	printf("%d\n", strncmp("abcc", "abcd",3));
	printf("%d\n", strncmp("accd", "abcd",2));
	printf("%d\n", strncmp("bbce", "cbcd",1));
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

strncat

char * strncat ( char * destination, const char * source, size_t num );

代码演示:

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

int main()
{
	char arr[20] = "hello ";
	char str[] = "worldssss";
	puts(strncat(arr, str, 5));
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

字符串查找

strstr

char * strstr ( const char *, const char * );

这个是查找子字符串,如果查找到了,就返回被查找字符串中子字符串的地址。
如果没有找到就返回NULL。

代码演示:

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

int main()
{
	char str[] = "abcdef";
	char arr[] = "bcd";
	printf("%s", strstr(str, arr));
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

strtok

char * strtok ( char * str, const char * sep );

sep参数是个字符串,定义了用作分隔符的字符集合
第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)
strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
如果字符串中不存在更多的标记,则返回 NULL 指针。

代码演示:

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

int main()
{
	char str[] = "123.456.789@qq.com";
	char arr[] = ".@";
	char copy[20] = { 0 };
	strcpy(copy, str);
	char* ret = NULL;
	for (ret = strtok(copy, arr); ret != NULL; ret = strtok(NULL, arr))
	{
		printf("%s\n", ret);
	}

	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

错误信息报告

strerror

char * strerror ( int errnum );

这个函数主要提示库函数的错误信息,每个数字都对应一种错误信息,当发生错误是,程序会将错误放在errno中。使用errno是必须包含errno.h头文件

字符操作

字符分类函数

【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

字符转换函数

int tolower ( int c ); 大写字母转换小写
int toupper ( int c ); 小写字母转换大写

内存函数

内存函数是什么类型都可以用的

memcpy

void * memcpy ( void * destination, const void * source, size_t num );

函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。
这个函数在遇到 '\0’的时候并不会停下来。
如果source和destination有任何的重叠,复制的结果都是未定义的。

代码演示:

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

int main()
{
	int arr[] = { 1,2,3,4,5,6,4,8,9 ,10};
	int arr1[10] = {0};
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", arr1[i]);
	}
	printf("\n");
	memcpy(arr1, arr, sz * sizeof(int));
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", arr1[i]);
	}
	printf("\n");
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言
但是memcpy不能处理重叠的内容,重叠的内容要交给memmove来处理。

memmove

void * memmove ( void * destination, const void * source, size_t num );

和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。
如果源空间和目标空间出现重叠,就得使用memmove函数处理。

代码演示:

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

int main()
{
	char str[] = "12345678";
	memmove(str, str + 2, 3);
	puts(str);
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

memset

void * memset ( void * ptr, int value, size_t num );

这个函数是将num个字节的内容设置为value。

代码演示:

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

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	memset(arr, 0, sz * sizeof(arr[0]));
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言
这个函数要注意设置的内容是以字节为单位的。

memcmp

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

比较从ptr1和ptr2指针开始的num个字节

返回值如下:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言
从第一个字节开始比较,如果不相同,*ptr1大于 *ptr2时返回大于0的数字,小于时返回小于0的数字,num个字节都相同返回0.
代码演示:

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

int main()
{
	int arr1[] = { 1,2,3,4,5,6 };
	int arr2[] = { 1,2,3,4,5,6 };
	printf("%d", memcmp(arr1, arr2, 6 * 4));
	return 0;
}

运行结果:
【C】字符串函数和内存函数的介绍,C语言,c语言,开发语言

今天的分享就到这里吧,感谢大家的关注和支持。文章来源地址https://www.toymoban.com/news/detail-579021.html

到了这里,关于【C】字符串函数和内存函数的介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 进阶C语言——字符串和内存函数

    今天我们学点库函数 字符函数和字符串函数 求字符串长度函数-strlen strlen需要的头文件是string.h ,那它的作用是什么呢?? 他是来求字符串长度的,统计的是’\\0’前的字符串长度 size_t是无符号的意思 学会了strlen函数怎么使用,那我们现在模拟实现一下strlen 之前讲过三种方

    2024年02月16日
    浏览(48)
  • 【C语言】字符函数与字符串函数以及内存函数 { 超详细攻略,一篇学会 }

    今日分享:字符、字符串函数和内存函数 内存函数 就是对内存进行操作的函数 字符串函数 就是对字符串进行操作的函数 字符函数 就是对字符进行操作的函数 str 前缀的函数是字符串函数,头文件string.h mem 前缀的函数是内存函数,头文件stdlib.h 字符分类函数包含在 ctype.h 头

    2024年03月18日
    浏览(58)
  • C语言之字符串,内存操作函数详解(一)

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 C语言的标准库为我们提供了丰富的字符串操作函数与内存操作函数,有我们熟悉的 strlen ,strcpy ,也有我们不熟悉的 strchr , strstr 等

    2024年02月08日
    浏览(66)
  • 【c语言:常用字符串函数与内存函数的使用与实现】

    简介:本篇文章是对C语言中常用的字符串函数和内存函数的学习以及模拟实现 文档内容来自:https://legacy.cplusplus.com/ 字符串以 ‘\\0’ 作为结束标志, strlen函数返回的是在字符串中 ‘\\0’ 前⾯出现的字符个数( 不包含 \\\'\\0\\\' )。 参数指向的字符串必须要以 ‘\\0’ 结束。 注意函

    2024年02月04日
    浏览(43)
  • 学C的第二十八天【字符串函数和内存函数的介绍(一)】

    ========================================================================= 相关代码gitee自取 :C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 学C的第二十七天【指针的进阶(三)】_高高的胖子的博客-CSDN博客  ================================

    2024年02月16日
    浏览(41)
  • 学C的第二十九天【字符串函数和内存函数的介绍(二)】

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 学C的第二十八天【字符串函数和内存函数的介绍(一)】_高高的胖子的博客-CSDN博客  =======

    2024年02月16日
    浏览(52)
  • C语言——字符串及字符函数的介绍

    1.1strlen的使用 运行结果: 1.2strlen的三种模拟实现 1.2.1计数器实现strlen函数 1.2.2递归方法实现strlen函数 1.2.3指针方法实现strlen函数 1.3 注意事项 ①、字符串已经 ‘\\0’ 作为结束标志, strlen函数返回的是在字符串中 ‘\\0’ 前面出现的字符个数(不包含 ‘\\0’ )。 ②、参数指向

    2024年02月02日
    浏览(33)
  • 【C语言】字符函数和字符串函数(一)—>库函数的介绍与模拟实现

    目录 前言: 一、函数介绍: (一)求字符串长度 (1)strlen (二)长度不受限制的字符串函数 (2)strcpy (3)strcat (4)strcmp (三)长度受限制的字符串函数 (5)strncpy (6)strncat (7)strncmp (四)字符串查找 (8)strstr (9)strtok (五)错误信息报告 (10)strerror (六)

    2024年02月15日
    浏览(45)
  • 一篇博客学会系列(1) —— C语言中所有字符串函数以及内存函数的使用和注意事项

    目录 1、求字符串长度函数 1.1、strlen 2、字符串拷贝(cpy)、拼接(cat)、比较(cmp)函数 2.1、长度不受限制的字符串函数 2.1.1、strcpy 2.1.2、strcat 2.1.3、strcmp 2.2、长度受限制的字符串函数 2.2.1、strncpy 2.2.2、strncat 2.2.3、strncmp 3、字符串查找函数 3.1、strstr 3.2、strtok 4、错误信息报告函数

    2024年02月08日
    浏览(48)
  • 字符串函数+内存函数(详解)

    本期带大家一起来学习字符串函数+内存函数😀 😃 😄 1. 求字符串长度 strlen🚀🚀 字符串 已经 ‘\\0’ 作为结束标志 ,strlen函数返回的是在字符串中 ‘\\0’ 前面出现的字符个数(不包含 ‘\\0’ )。 strlen在库里面的参数是如此的 ⌛️⌛️ 接下来我们来模拟实现strlen ,接下来

    2023年04月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包