幾個常見字串處理函式的實現原理

2021-09-06 17:12:30 字數 2630 閱讀 5561

字串是一種常見的資料結構,對字串的處理又能夠十分靈活,所以在實際開發,尤其是非數值處理中,字串的應用非常廣泛。儘管非常多字串操作都封裝在了函式庫裡,應用程式能夠直接通過呼叫庫函式來實現字串處理,然而對於開發人員而言,若能了解其底層實現原理,對於應用程式設計而言還是大有裨益的。

這篇文章主要介紹幾種經常使用的字串處理函式的實現原理。

一、strlen函式

strlen函式:計算字串的實際長度,不包含』\0』。

演算法:從第乙個字元開始掃瞄,直到遇見第乙個』\0』,停止掃瞄,返回字串長度。

**例如以下:

int strlen(const char *str)

二、strcat函式

strcat函式:將源字串str2加入到目的字串str1的末尾,同一時候覆蓋str1末尾的』\0』,並在新的str1末尾加入』\0』,返回指向str1的指標。

演算法:掃瞄str1,直到遇見』\0』,將str2逐個字元加入到str1末尾,最後加入』\0』。

**例如以下:

char *strcat(char *str1, const char *str2)

三、strcmp函式

strcmp函式:比較str1和str2兩個字串的大小,若str1>str2,則返回正數;若str1演算法:逐個比較str1和str2的每乙個字元,若相等且未遇見』\0』,則繼續比較下乙個字元,否則,返回*str1和*str2的差值。

**例如以下:

int strcmp(const char *str1, const char *str2)

return *str1 - *str2;

}

四、strcpy函式

strcpy函式:將字串str2(包含null)拷貝到字串str1,返回指向str1的指標。

**例如以下:

char *strcpy(char *str1, const char *str2) 

五、atoi函式

atoi函式:把字串轉換成整數。

演算法:首先跳過空格或製表符,再推斷符號,最後通過減去』0』轉化整數,跳過非數值,返回轉換後的整數。

**例如以下:

int atoi(char *str)

return sign*sum;

}

六、itoa函式

itoa函式:將整數轉化為字串。

演算法:先推斷整數的符號,若為負,則將其轉換為正;將整數從個位到最高位依次存放在暫時陣列tmp中,假設是負整數,則再加入乙個負號;逆序將暫時陣列的各個元素放在str字元陣列中,在最後加入乙個空字元。

**例如以下:

void itoa(int num, char str)

while(num>0);

if(sign<0)

tmp[i++]='-';

tmp[i]='\0';

i--;

while(i>=0)

str[j]='\0';

}

另:替換子串問題

非常多時候會碰到要求替換字串中的子串,這時須要考慮幾個問題:

1、  溢位問題

假設題目要求在原字串中替換,這時就要考慮替換後字串的長度是否會大於設定的長度;假設能夠新建乙個字串,那麼使用者能夠自行設定大小,這樣一般不存在溢位問題。

2、  待替換子串和替換子串的長度比較,將終於影響字串的長度變化。

解法一:新建乙個字串來存放替換後的字串;

**例如以下:

#includeint main()//直接main函式實現

} printf("str1=%s\n",str1);

return 0;

}

解法二:在原字串上替換,從後往前替換空格;

**例如以下:

void replaceblank(char string, int length)

/*newlength 為把空格替換成'%20'之後的長度*/

int newlength = originallength + numberofblank * 2;

if(newlength > length)

return;

int indexoforiginal = originallength;

int indexofnew = newlength;

while(indexoforiginal >= 0 && indexofnew > indexoforiginal)

else

-- indexoforiginal;

}}

wednesday,july 09, 2014

常見字串函式實現

1,strlen 計數法 unsigned int my strlen1 const char str return count 遞迴法 unsigned int my strlen2 const char str 首尾相減法 unsigned int my strlen3 const char s...

常見字串函式的原型!!!

1 strcat 將指標指向的字串放到目的字串後 cpp char strcat char strdest,const char strscr 將源字串加const,表明其為輸入引數 向該字串的結束標誌 0 while strdest strscr 是while strdest strscr 0 的...

Python常見字串方法函式

1 大小寫轉換 s.lower s.upper 前者將s字串中所有大寫字母轉為小寫,後者相反 s.title s.capitalize 前者返回s字串中所有單詞首字母大寫且其他字母小寫的格式,後者返回首字母大寫 其他字母全部小寫的新字串。s.swapcase 將s字串中所有字母做大小置換,大寫變小寫...