1、函數原型(利用指針求字符串的長度)
#include <stdio.h> size_t strlen(const char *s) //函數頭的形參為常數的、指向char型的指針,也就是接收的形參為指針(實際上傳入的是字符串數組,函數間數組的傳遞實際上是通過指向第一個元素的指針完成的) { // 函數的返回值設置的位size_t類型,size_t類型是通過在<stddef.h>頭文件中使用 typedef聲明指定的,typedef是別名聲明,typedef unsigned size_t, 也就是將size_t size_t len = 0; //聲明為unsigned的別名 while(*s++) // 指針從數組的第一個元素一次遞增,直到指針指向null字符,while循環判斷語句為0,循環終止,循環體len++執行了數組s(字符串)元素個數次,因此len為數組長度。 len++; return len; } int main(void) { char str[128]; printf("str: "); scanf("%s", str); printf("length of str: %d\n", strlen(str)); //調用函數時,給與的實參是字符串數組名,相當於指向數組第一個元素的指針(函數間數組的傳遞是通過指向數組第一個元素的指針進行的)。 return 0; }
2、聲明 <string.h>頭文件,可以直接調用strlen函數,<string.h>頭文件中包含strlen函數的函數原型聲明。
#include <stdio.h> #include <string.h> //加載包含strlen函數原型聲明的頭文件,可以直接調用strlen int main(void) { char str[128]; printf("str: ");scanf("%s", str); printf("length of str: %d\n", strlen(str)); return 0; }