字元函式和字串函式

2021-10-25 07:28:54 字數 3525 閱讀 9345

求字串的長度

乙個帶』\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 類似於乙個陣列名...