C語言中提供了許多的字元串操作函數,常見的字元串操作函數有以下幾種: 1,求字元串長度的函數 原型函數:strlen(字元串名稱); 實現原理:將字元串名稱傳入該函數,該函數會遍歷該字元串,最後將長度返回給我們,註意返回的長度不包括'\0'; 2,字元串拷貝函數 原型函數:strcpy(字元串1名稱 ...
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; }