[英]Why strlen() can get the length of string and sizeof cannot in C?
我想在VS Ccode中計算C中字符串的長度,但是當我使用sizeof函數時,編譯的時間並沒有停止並得到任何結果; 另一方面,我可以通過 strlen 函數獲取長度:為什么?
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char greeting[] = "hello";
int len = strlen(greeting);
//int len = sizeof(greeting);
printf("length is:%d",len);
return 0;
}
我知道它們之間的區別: strlen()
用於獲取字符/字符串數組的長度,而sizeof()
用於獲取任何類型數據的實際大小(以字節為單位)。 但是,我不知道為什么我運行sizeof時沒有答案。
您調用了未定義的行為:您正在使用int
格式打印size_t
類型的值。 這不能保證有效。 投射價值:
printf("length is: %d\n, (int)sizeof(greeting));
結果將比strlen()
的結果strlen()
因為strlen()
不計算終止空字節而sizeof()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.