pragma mark 字符串常用方法2
pragma mark 概念
/**
字符串連接函數(shù) strcat 闯捎、strncat(多了一個(gè)拼接的個(gè)數(shù))
字符串拷貝函數(shù) strcpy 耐齐、strncpy
字符串比較函數(shù) strcmy 燕鸽、strncmy
*/
pragma mark 代碼
#include <stdio.h>
#include <string.h> // 字符串拼接灼擂、拷貝喉悴、比較允乐、計(jì)算長(zhǎng)度
int main()
{
#warning 字符串拼接 strcat函數(shù) strncat函數(shù)
/*
// 1.字符串拼接
// 拼接原理 : 首先遍歷第一個(gè)字符串, 直到遇到\0為止,然后取出第二個(gè)字符串中的字符,從\0的位置開始添加,添加完畢之后再最后面添加一個(gè)\0
char str1[7] = "lyh";
char str2[10] = " cool";
printf("拼接前 : %s\n",str1);
// strcat(dest, src)
// dest : 目標(biāo) src : 源
// 將src中的數(shù)據(jù)拼接到dest后面
// 注意 : 要向使用字符串拼接函數(shù),那么dest必須是一個(gè)數(shù)組,并且數(shù)組的長(zhǎng)度必須大于拼接之后的長(zhǎng)度\
如果dest數(shù)組的長(zhǎng)度, 不能完全存放dest+src+\0 , 那么就會(huì)報(bào)錯(cuò)
// strcat(str1, str2);
// char * 相當(dāng)于 dest
// const char * 相當(dāng)于 src
// size_t 需要拼接的個(gè)數(shù)
// 為了避免拼接之后超出str1的存儲(chǔ)范圍,那么可以動(dòng)態(tài)計(jì)算str2需要拷貝幾個(gè)到str1后面不會(huì)超出
// str1能夠存放的元素個(gè)數(shù) - str已經(jīng)存放的個(gè)數(shù) - \0
size_t length = sizeof(str1) / sizeof(str1[0]) - strlen(str1) - 1; // 10 - 3
printf("length = %lu\n",length);
strncat(str1, str2, 2);
printf("拼接后 : %s\n",str1);
*/
#warning 字符串拷貝 strcpy畴椰、strncpy
/*
char str1[4] = "lyh";
char str2[] = "cool";
printf("拷貝前 str1 = %s\n",str1);
// char * 目標(biāo) const char * 源
// strcpy 函數(shù)會(huì)將源的數(shù)據(jù)拷貝目標(biāo)中,并且會(huì)覆蓋掉目標(biāo)中原有的數(shù)據(jù)
// 目標(biāo)的容積能夠存放拷貝的數(shù)據(jù),如果容積不夠會(huì)報(bào)錯(cuò)
// strcpy(str1, str2);
// strncpy
// char * 相當(dāng)于 dest
// const char * 相當(dāng)于 src
// size_t 需要拷貝幾個(gè)
// 注意 : 拷貝做是逐個(gè)替換,拷貝了幾個(gè)就替換幾個(gè)
// str能夠存放元素的個(gè)數(shù) -1是給\0留出的位置
int length = sizeof(str1) / sizeof(str1[0]) - 1;
// printf("length = %i\n",length);
strncpy(str1, str2, length);
printf("拷貝后 str1 = %s\n",str1);
*/
#warning 字符串比較 strcmy瓣喊、strncmy
char str1[] = "abb";
char str2[] = "abc";
// strcmp 他會(huì)對(duì)傳入的字符串進(jìn)行比較,比較完畢之后返回一個(gè)整型的值給我們
// 如果讀值等于0,那么證明兩個(gè)字符串相等
// 如果該值小于0,那么證明str1小于str2
// 如果該值大于0,那么證明str1大于str2
// strcmp 原理 : 取出字符串中的每一個(gè)字符進(jìn)行逐個(gè)比較,如果發(fā)現(xiàn)不想等就不會(huì)繼續(xù)往下比較
int res = strcmp(str1, str2);
printf("res = %i\n",res);
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者