字符函数和字符串函数

目录

前言

一、字符函数

1、字符分类函数

2、字符转换函数

二、字符串函数

1、strlen的使用和模拟实现

2、strcpy 的使用和模拟实现

3、strcat 的使用和模拟实现

4、strcmp的使用和模拟实现

5、strncpy 函数的使用

6、strncat 函数的使用

7、strncmp函数的使用

8、strstr 的使用和模拟实现


前言

本章我们讲一下字符函数和字符串函数,共包括两个大部分,即字符函数详解和字符串函数详解,每个部分都详细介绍所对应的函数类型,话不多说,让我们走进今天的课程

一、字符函数

1、字符分类函数

C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的

这些函数的使用都需要包含一个头文件是 ctype.h(这类函数的具体说明放置在文章最后)

这些函数的使用方式都非常类似,我们拿其中一个举例:

 int islower ( int c );

islower 是能够判断参数部分的 c 是否是小写字母的

通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0

2、字符转换函数

C语言提供了2个字符转换函数:

 int tolower ( int c );
 //将参数传进去的⼤写字⺟转⼩写
     
int toupper ( int c ); 
//将参数传进去的⼩写字⺟转⼤写
 

这些函数的使用也都需要包含一个头文件 ctype.h

 #include <stdio.h>
 #include <ctype.h>
 int main ()
 {
   int i = 0;
   char str[] = "Test String.\n";
   char c;
   while (str[i])
   {
      c = str[i];
      if (islower(c)) 
      c = toupper(c);
      putchar(c);
      i++;
   }
    return 0;
 }

二、字符串函数

1、strlen的使用和模拟实现

strlen是用来计算字符串大小的函数,返回字符串中\0之前的元素个数

 size_t strlen ( const char * str );

注意函数返回值类型为size_t,是无符号的(易错)

strlen的使用需要包含头文件<string.h>

strlen函数的模拟实现:

int my_strlen(const char* str)
{
    int count = 0;
    while (*str)
    {
        count++;
        str++;
    }
    return count;
}

2、strcpy 的使用和模拟实现

strcpy是用来把一个字符串中的数据拷贝到另一个字符串中的函数,返回目标首元素的地址

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

注意:目标空间必须足够大且能修改,以确保能存放源字符串

strcpy函数的模拟实现

char *my_strcpy(char *dest, const char*src)
 {        
  char *ret = dest;
  assert(dest != NULL);
  assert(src != NULL);
  while((*dest++ = *src++))
  {
    ;
  }
  return ret;
 }

3、strcat 的使用和模拟实现

strcpy是用来把一个字符串中的数据追加到另一个字符串中的函数,返回目标首元素的地址

strcat函数的模拟实现

char* Simu_strcat(char* a, char* b)
{
	char* len = a;
	while (*a != '\0')
		a++;
	while ((*a++ = *b++) != '\0')
		;
		return len;
}

4、strcmp的使用和模拟实现

strcmp是比较两个字符串中对应位置上字符ASCII码值的大小的函数,若大于则返回大于零的数,等于则返回零,小于则返回小于零的数

strcmp函数的模拟实现

int my_strcmp(const char* a,const char* b)
{
	while (*a == *b && *a != '\0' && *b != '\0')
	{

		a++;
		b++;

	}
	return *a - *b;
}

5、strncpy 函数的使用

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

拷贝num个字符从源字符串到目标空间

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

6、strncat 函数的使用


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

将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加一个\0字符

7、strncmp函数的使用

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

比较str1和str2的前num个字符,如果相等就继续往后比较,最多比较num个字母,如果提前发现不一样,就提前结束,大的字符所在的字符串大于另外一个。如果num个字符都相等,就是相等返回0

8、strstr 的使用和模拟实现

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

函数返回字符串str2在字符串str1中第一次出现的位置

char* my_strstr(const char* str1, const char* str2)
{
	char* move = (char*)str1;
	char* s1 = (char*)str1;
	char* s2 = (char*)str2;
	if (str2 == '\0')
	{
		return (char*)str1;
	}
	while (*move)
	{
		s1 = move;
		s2 = (char*)str2;
		while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return move;
		}
		move++;
	}
	return NULL;
}


 本章到这里就结束啦,希望各位小伙伴可以点个关注,支持一下阿鹿,大家的鼓励是我前进的第一动力,3Q~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值