今天學習希爾排序時,發現使用strlen()函式返回的長度不正確,然後開始分析錯誤原因。
**如下
int main()
; int len =strlen(a);//設定斷點
for(int j=0;j<8;j++)
printf("%d ",a[j]);
cout發現len的值並非8
然後我就進行測試
根據360百科
strlen(char*)函式求的是字串的實際長度,它求得方法是從開始到遇到第乙個'\0',如果你只定義沒有給它賦初值,這個結果是不定的,它會從aa首位址一直找下去,直到遇到'\0'停止。
char aa[10];cout
我得出乙個猜想,strlen(a),當a並非字串陣列時,編譯有可能出錯(不會自動在末尾加上\0)。
所以應該在末尾加上'\0',這樣才能得到字串實際的長度。
最後我去掉測試的**。
#include#include#includeusing namespace std;
void shellsort(char a)}}
}int main()
;int len =strlen(a);
for(int j=0;j<8;j++)
printf("%d ",a[j]);
cout成功執行!
總結:有些時候偷懶不是什麼好事。
C語言strlen 函式 返回字串的長度
標頭檔案 include strlen 函式用來計算字串的長度,其原型為 unsigned int strlen char s 引數說明 s為指定的字串。strlen 用來計算指定的字串s 的長度,不包括結束字元 0 返回值 返回字串s 的字元數。注意一下字元陣列,例如 char str 100 定...
C語言strlen 函式 返回字串的長度
標頭檔案 include strlen 函式用來計算字串的長度,其原型為 unsigned int strlen char s 引數說明 s為指定的字串。strlen 用來計算指定的字串s 的長度,不包括結束字元 0 返回值 返回字串s 的字元數。注意一下字元陣列,例如 char str 100 定...
PHP字串長度計算 strlen 函式
strlen 函式和mb strlen 函式 在php中,函式strlen 返回字串的長度。函式原型如下 int strlen string string input 引數string input為要處理的字串。strlen 函式返回字串所佔的位元組長度,乙個英文本母 數字 各種符號均佔乙個位元組,...