求字串的長度
乙個帶』\0』的字元陣列才叫字串
strlen函式
size_t strlen(const char str);*
strlen函式返回的是不包含**』\0』**的字元個數;
引數指向的字串必須以』\0』結束;
函式的返回值為size_t,是無符號的(unsigned int)
函式的模擬實現:
方法1:計數器方式
size_t my_strlen
(const
char
* str)
return count;
}
方法2:不建立臨時變數的計數器
size_t my_strlen
(const
char
* str)
else
}
方法3:指標-指標
size_t my_strlen
(const
char
* str)
return str - start;
}
結果:6
長度不受限制的字串函式
strcpy函式
字串拷貝
char strcpy(char dest,const char* src);**
注意:目標空間必須足夠大,確保能存放源字串
strcpy函式實現
char
*strcpy
(char
* dest,
const
char
* src)
return ret;
}int
main()
;strcpy
(str2, str1)
;printf
("%s"
, str2)
;system
("pause");
return0;
}
結果:
strcat函式
字串拼接
char strcat(char dest,const char* src);**
注意:目標空間必須足夠大
函式的實現
char
*my_strcat
(char
* dest,
const
char
* src)
while
(*src)
return ret;
}int
main()
結果:
字串比較
比較規則:字典序
int
my_strcmp
(const
char
* str1,
const
char
* str2)
str1++
; str2++;}
if(*str1 >
*str2)
else
}int
main()
else
if(ret ==0)
else
if(ret>0)
system
("pause");
return0;
}
結果:小於
字串查詢
strstr
查詢字串中的子字串
char
*my_strstr
(const
char
* str1,
const
char
* str2)
while
(*cp)if(
*s2 ==
'\0'
) cp++;}
return
null;}
intmain()
結果:
記憶體操作函式
memcpy
源資料與目標資料不能有任何重疊部分,否則複製的結果是未定義的
void
*my_memcpy
(void
* dest,
void
* src, size_t count)
return ret;
}int
main()
;int arr2[10]
=;my_memcpy
(arr2, arr1,
sizeof
(arr1));
for(
int i =
0; i <
10; i++
)system
("pause");
return0;
}
結果:
,用法和memcpy一樣,但能夠處理記憶體塊重疊的問題
為了方面函式實現:
如果destsrc,將從後向前拷貝
void
*my_memmove
(void
* dest,
const
void
* src, size_t count)
}else}}
intmain()
;my_memmove
(arr1 +
2, arr1,20)
;for
(int i =
0; i <
10; i++
)system
("pause");
return0;
}
結果:
字元函式和字串函式
size t strlen const char str 模擬實現strlen 字串長度 include include size t mystrlen const char str return count int main 字串拷貝 char strcpy char destination,co...
字串和字串函式
字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...
字串和字串函式
1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,計時函式被呼叫多次。用雙引號括起來的內容被視為指向該字串儲存位置的指標。hello 中的 hello 類似於乙個陣列名...