strlen函數用來求字符串的長度,計算原則是從字符串的第一個元素到第一個’\0‘之間元素的個數,所以會出現以下問題:
char a[3] = {'a','b','c'};
char b[3] = "abc";
char c[3] = "ab";
printf("a:%d,b:%d,c:%d\n",strlen(a),strlen(b),strlen(c));
可以計算得出結果,
可查看三個字符數組的存儲數據:
可看出當用字符串常量來賦值時,字符串常量後面會自動補上'\0',而用上面數組a的賦值方式時就不會自動補充'\0'了,所以使用strlen函數時就會導致結束位置出錯的問題。
同時要注意的是用字符串常量給字符數組賦值是需要注意數組的長度,如b和c,要把後面補充的'\0'也加上,否則會導致出錯。