C語言基礎及指標⑥字元操作
阿新 • • 發佈:2019-01-04
接續上篇C語言基礎及指標⑤動態記憶體分配
字元操作 , 是我們寫程式時 , 最常用的一種操作 , 例如:字串擷取 , 字串替換 , 字串轉整數型別等等 , 都是字元操作 , 在java中String
類就是二三十個方法 , 還有StringBuffer
, StringBuilder
等輔助類 。 下面 ,我們就來看看C語言中字元處理的函式 。
一. 字元陣列
// 字元陣列 void charArray() { // 字元陣列 , 可以修改 char c[15] = { 'y','e','s',' ','m','a','n' }; // 字元陣列可以直接作為字串輸出 printf("%s\n", c); // 修改 c[0] = 'a'; printf("修改字元:%s\n", c); }
字元陣列 , 本身是一個數組 , 但是也可以作為字串格式化輸出 , 可以任意替換裡面的字元 , 和運算元組是一樣的 。
二. 字元指標
/*字元指標*/ void charPointer() { // 記憶體連續排列 , 不可修改 char* s = "Never give up"; printf("記憶體地址:%#x\n", s); printf("-------------------------------\n擷取字元\n"); // 擷取字元 s += 6; while (*s) { printf("%c", *s); s++; } }
字元指標與字元陣列 , 最大的區別是一個定義了就不可以修改 , 一個可以任意修改裡面的字元 , 就和String
和StringBuilder
一樣 , String定義了就無法增加或修改裡面的內容 , 一個是可以增加和修改裡面的內容 。
下面就列舉幾個常用的操作:
字元函式查詢網站: 字串函式
拼接字串
/*拼接函式*/ void spliceString() { // 合併後儲存字元的容器 char dest[40] = {'h','e','h','e',' '}; char* c1 = "Never give up "; char* c2 = "I blive you ! "; // 會清除字元陣列原有的資料 //strcpy(dest, c1); strcat(dest, c1); strcat(dest, c2); printf("\n拼接字串:\n%s\n", dest); }
查詢單個字元
/*查詢單個字元*/
void searchChar() {
char* str = "I wanna dont kiss you";
char* p = strchr(str, 'd');
if (p) {
printf("索引位置:%d\n", p - str);
printf("列印: ");
str += p - str;
while (*str)
{
printf("%c",*str);
str++;
}
printf("\n");
}
else {
printf("沒有找到\n");
}
}
查詢字串
/*查詢字串*/
void sreachChars() {
char* str = "落花有意流水無情";
char* handle = "流";
char* p = strstr(str, handle);
if (*p) {
printf("索引位置:%d\n", p - str);
printf("列印: ");
str += p - str;
printf("%s ---- %s\n", str,p);
}
else {
printf("沒找到\n");
}
}
字元轉換
/*字元轉換int*/
void strToInt() {
char* p = "123";
int toInt = atoi(p);
int res = toInt + 123;
printf("字元轉換int數值: %d\n", res);
}
字元轉換函式定義:
/-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Narrow String to Number Conversions
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
_Check_return_ _ACRTIMP double __cdecl atof (_In_z_ char const* _String);
_Check_return_ _CRT_JIT_INTRINSIC _ACRTIMP int __cdecl atoi (_In_z_ char const* _String);
_Check_return_ _ACRTIMP long __cdecl atol (_In_z_ char const* _String);
_Check_return_ _ACRTIMP long long __cdecl atoll (_In_z_ char const* _String);
_Check_return_ _ACRTIMP __int64 __cdecl _atoi64(_In_z_ char const* _String);
_Check_return_ _ACRTIMP double __cdecl _atof_l (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP int __cdecl _atoi_l (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP long __cdecl _atol_l (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP long long __cdecl _atoll_l (_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP __int64 __cdecl _atoi64_l(_In_z_ char const* _String, _In_opt_ _locale_t _Locale);
_Check_return_ _ACRTIMP int __cdecl _atoflt (_Out_ _CRT_FLOAT* _Result, _In_z_ char const* _String);
_Check_return_ _ACRTIMP int __cdecl _atodbl (_Out_ _CRT_DOUBLE* _Result, _In_z_ char* _String);
_
C語言中的字元操作函式也比較多 , 這裡列舉幾個常用的 , 其他的可以去字串函式網址查詢 , 都有例子 。
歡迎加入Android開發技術交流QQ群:150923287,本群可免費獲取Flutter、Gradle、RxJava、小程式、Hybrid、移動架構、NDK、React Native、效能優化等技術教程!