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; }

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/45030.html
標籤:C
下一篇:vs2019設定及第三方庫的使用
