字串處理有幾個主要的方式。分別討論如下:
1)字串長度
2)字串複製
3)字串串連
1)字串長度
size_t strlen(const char*); /* size_t 為unsigned integer. but will be unsigned long in 64bit system */
/* sample code */
void main(void)
{
size_t string_len = 0;
char *string = "AlubaGood";
string_len = strlen(string);
printf("Lengtg of input string = %u \n\r",string_len);
}
如上sample code, 我們會得到string_len = 9
2)字串複製
如果要進行字串複製,可以使用strcpy()函式,若要複製字串中若干字元內容,則可以使用strncpy():
char* strcpy(char*, const char*);
char* strncpy(char*, const char*, size_t);
/* sample code */
void main(void)
{
char *string_1="abcdefg";
char *string_2="hijklmn";
strcpy(string_1,string_2);
printf("After copy, string_1=%s, string_2=%s \n\r",string_1,string_2);
}
上面的結果會show出 After copy , string_1=hijklmn, string_2=hijklmn
strcpy()是會把source string整個「蓋掉」destinaion string. 如果只是想要copy「某些長度」的string的話則要用strncpy()
上面的code如果把strcpy()換成strncpy(string_1,string_2,3); 則會show出 After copy, string_1=hij, string_2=hijklmn
3)字串串連
如果今天要做的是把兩個字串「相連/相加」在一起的話則是要用strcat(), 相連特定長度的話用strncat()
/* sample code */
void main(void)
{
char *string_1="abcdefg";
char *string_2="hijklmn";
strcat(string_1,string_2);
printf("After connect, string_1=%s, string_2=%s \n\r",string_1,string_2);
}
上面的結果會show出 After copy , string_1=abcdefghijklmn, string_2=hijklmn
如果把strcat()換成strncat(string_1,string_2,3); 則上面結果會變成 After copy , string_1=abcdefghij, string_2=hijklmn
Reference:
http://caterpillar.onlyfun.net/Gossip/CGossip/StringLengthCopyCat.html
http://www.cplusplus.com/reference/clibrary/cstring/strncat/
沒有留言:
張貼留言