字符函数和字符串函数

一、函数介绍
1.strlen

size_t strlen(const char* str);
  • 字符串以’\0’作为结束标志,strlen函数返回的是在字符串中‘\0’前面出现的字符个数
  • 参数指向的字符串必须要以’\0’结束
  • 函数的返回值是size_t,是无符号的
#include<iostream>
#include<string>
using namespace std;
int my_strlen(string s)
{
 size_t start=0;
 size_t end=s.size()-1;
 size_t count=0;
 while(start<=end)
 {
     ++count;
     ++start;
 }
 return count;
 }
 int main()
 {
    string s;
    getline(sin,s)
    cout<<my_strlen(s)<<endl;
    return 0;
 }


2.strcpy

char* strcpy(char* destination,const char* source);
  • 源字符串必须以’\0’结束
  • 会将源字符串的’\0’拷贝到目标空间
  • 目标空间必须足够大,以确保能存放源字符串
  • 目标空间必须可变
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* s1,const char* s2)
{
  assert(s1);
  assert(s2);
  char* s3=s1;
  while(*s1++=*s2++)
  {
  }
  return s1;
}
int main()
{
    char s1[]={"adnfuefb};
    char s2[]={"jinu"};
    my_strcpy(s1,s2);
    printf("%s\n",s1);
 }

3.strcat

char* strcat(char* destination,char* source);
  • 源字符串必须以’\0’结束
  • 目标空间必须足够大,能从容纳下源字符串内容
  • 目标空间必须可修改
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* s1,const char* s2)
{
   assert(s1);
   assert(s2);
   char* s3=s1;
   while(*s1)
   {
      ++s1;
   }
   while(*s1++=*s2++)
   {
   }
   return s1;
 }
 int main()
 {
    char s1[]={"sdfadfrfr"};
    char s2[]={"dfd"};
    my_strcat(s1,s2);
    printf("%s\n",s1);
    return 0;
  }

4.strcmp

int strcmp(const char* str1,const char* str2);
  • 第一个字符串大于第二个字符串,返回大于0的数字
  • 第一个字符串小于第二个字符串,返回0
  • 第一个字符串小于第二个字符串,返回小于0的数字
#include<stdio.h>
#include<assert.h>
int my_strcmp(char* s1,char* s2)
{
     assert(s1);
     assert(s2);
     int count1=0;
     int count2=0;
     while(*s1)
     {
        ++count1;
        ++s1;
      }
      while(*s2)
      {
        ++count2;
        ++s2;
      }
      if(count1<count2)
      return -1;
      else if(count1>count2)
      return 1;
      else
      return 0;
 }
 int main()
 {
   char s1[]={"fgadg"};
   char s2[]={"djbgag"};
   printf("%d\n",my_strcmp(s1,s2));
 }

5.strncpy

char* strncpy(char* destination,const char* source,size_t num);
  • 拷贝num个字符从源字符串到目标空间
  • 如果源字符串的长度小于num,则拷贝完字符串后,在目标的后边追加0,直到num个

6.strncmp

int strncmp(const char* str1,const char*str2,size_t num);
  • 比较两个字符串到出现字符不一样货值一个字符串结束或者num个字符全部比较完

猜你喜欢

转载自blog.csdn.net/D_4_Y_/article/details/88836495