C语言进阶语法--字符函数和字符串函数

文章目录

  • 前言
  • 一、函数介绍
  • 二、模拟实现
  • 总结

前言

字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。 功能:把src所指由NUL结束的字符串复制到dest所指的数组中。


一、函数介绍

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

函数如下:

求字符串长度
        strlen
长度不受限制的字符串函数
        strcpy
        strcat
        strcmp
长度受限制的字符串函数介绍
        strncpy
        strncat
        strncmp
字符串查找
         strstr
        strtok
错误信息报告
        strerror
字符操作
内存操作函数
        memcpy
        memmove
        memset
        memcmp

二、模拟实现

1.1 strlen

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

int main()
{
	const char arr1[] = "abcdeefgh";
	const char arr2[] = "zxcvbnm";
	if (strlen(arr1) > strlen(arr2))
	{
		printf("arr1>arr2\n");
	}
	else
	{
		printf("arr1

1.2 strcpy

字符串拷贝函数

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

Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point).
源字符串必须以 '\0' 结束。
会将源字符串中的 '\0' 拷贝到目标空间。
目标空间必须足够大,以确保能存放源字符串。
目标空间必须可变。

int main()
{
	char arr1[20] = "abcdefgh";
	char arr2[20] = { 0 };
	char* ret = strcpy(arr2, arr1);
	printf("%s\n", arr2);
	return 0;
}

1.3 strcat

字符串追加函数
Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatenation of both in destination.
源字符串必须以 '\0' 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。

1.4 strcmp

int strcmp ( const char * str1, const char * str2 );
This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ or until a terminating null-character is reached.
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

#include 
#include 
int main()
{
	char s1[] = "abcdef";
	char s2[] = "qwetui";
	//strcmp 计算规则
	//比较字符串首位字符的大小,其中ASCLL码值大的字符串大
	//其返回一个比0大的数字
	//如果两个相同,则比较第二个,依次进行
	//直至遇到结尾'\0'
	if (strcmp(s1, s2) > 0)
	{
		printf("s1>s2\n");
	}
	else if (strcmp(s1, s2) == 0)
	{
		printf("s1==s2\n");
	}
	else
	{
		printf("s1

1.5 strncpy

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


Copies the first num characters of source to destination. If the end of the source C string(which is signaled by a null-character) is found before num characters have been copied,destination is padded with zeros until a total of num characters have been written to it.
拷贝num个字符从源字符串到目标空间。
如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。

C语言进阶语法--字符函数和字符串函数_第1张图片

1.6 strncat

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

Appends the first num characters of source to destination, plus a terminating null-character.
If the length of the C string in source is less than num, only the content up to the terminating null-character is copied

注:控制个数的字符串追加

int main()
{
	char s1[30] = "abcefxxxxxxxxxx";
	char s2[] = "qwerty";
	strncat(s1, s2, 5);
	printf("%s", s1);
	return 0;
}
//输出结果:abcefxxxxxxxxxxqwert

1.7 strncmp

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

比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。

C语言进阶语法--字符函数和字符串函数_第2张图片


总结

以上即为我们今天所讲解内容,字符函数本身的用法还有很多,希望在以后的编码生涯中大家可以更好的使用。

你可能感兴趣的:(c语言,开发语言,c++,c#,算法)