自定義C語言中常用的字符串操作函數


C語言中提供了許多的字符串操作函數,常見的字符串操作函數有以下幾種:

 

1,求字符串長度的函數

  原型函數:strlen(字符串名稱);

  實現原理:將字符串名稱傳入該函數,該函數會遍歷該字符串,最后將長度返回給我們,注意返回的長度不包括'\0';

 

2,字符串拷貝函數

  原型函數:strcpy(字符串1名稱, 字符串2名稱);

  實現原理:該函數需要傳入兩個字符串名稱,所謂拷貝其實是指將字符串2所包含的元素,復制到字符串1中,注意

  這里的復制其實也包含覆蓋的意思,字符串1中原來的元素會被覆蓋掉;

 

3,字符串拼接函數

  原型函數:strcat(字符串1名稱, 字符串2名稱);

  實現原理:該函數也需要傳入兩個字符串名稱,所謂拼接其實是指將字符串2所包含的元素,拼接到字符串1的后面;

 

4,字符串比較函數

  原型函數:strcmp(字符串1名稱, 字符串2名稱);

  實現原理:該函數也是需要傳入兩個字符串的名稱的,然后同時遍歷兩個字符串,每次都分別從這兩個字符串中取出一個字符,

  再比較這兩個字符的ASCII碼,如果從字符串1中取出的字符的ASCII碼比從字符串2中取出的ASCII碼要大,那么該函數就會返回 1,

  如果小的話該函數就會返回 -1,如果取到了兩個字符串的最后一個字符,每一個字符的ASCII碼都是相等的,那么該函數就會返回 0。

 

了解完這幾個字符串操作函數的原理之后,我們就可以不使用C語言提供的庫函數,自己自定義這幾個函數了;

具體代碼如下:

#include <stdio.h>
//函數聲明
int myStrlen(char str[]);
void muStrcpy(char str1[], char str2[]);
void myStrcat(char str1[], char str2[]);
int myStrcmp(char str1[], char str2[]);
int main()
{
    char str1[] = "TomHe789";
    char str2[] = "TomHe";
    char str3[] = "789";
    char str4[] = "abcde";
    char str5[] = "abcde";
    //打印str1的長度
    printf("str1Len = %d\n", myStrlen(str1));   //8
    //將str2拷貝到str1中
    muStrcpy(str1, str2);                       
    printf("str1 = %s\n",str1);                 //TomHe
    //將str3拼接到str2后面
    myStrcat(str2, str3);                       
    printf("str2 = %s\n",str2);                 //TomHe789
    //打印出 myStrcmp(str4, str5)的結果
    printf("res = %d", myStrcmp(str4, str5));   //0
    return 0;
}

//自定義字符串長度函數
int myStrlen(char str[]){
    int len = 0;
    while (str[len] != '\0')
    {
        len++;
    }
    return len;
    
}

//自定義字符串拷貝函數
void muStrcpy(char str1[], char str2[])
{
    int len = 0;
    while (str2[len] != '\0' || str1[len] != '\0')
    {
        str1[len] = str2[len];
        len++;
    }
    str1[len] = '\0';
    
}

//自定義字符串拼接函數
void myStrcat(char str1[], char str2[])
{
    int len = 0;
    int len1 = 0;
    while (str1[len] != '\0')
    {
        len++;
    }
    while (str2[len1] != '\0')
    {
        str1[len] = str2[len1];
        len++;
        len1++;
    }
    str1[len] = '\0';
}

//自定義字符串比較函數
int myStrcmp(char str1[], char str2[])
{
    int len = 0;
    while (str1[len]!='\0' || str2[len]!='\0')
    {
        if(str1[len] > str2[len])
            return 1;
        else if(str1[len] < str2[len])
            return -1;
        else
            len++;
    }
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM