正確的答案是5,題目選項有誤。
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了中牟免費建站歡迎大家使用!
首先strlen()函數(shù)返回的長度是不包含'\0',
第一個字符為:a
第二個字符為:b
第三個字符為:\n (換行符)
第四個字符為:2
第五個字符為:\ (\\轉(zhuǎn)義為\)
所以答案為5。
(下圖為實際代碼演示)
擴展內(nèi)容:
strlen()函數(shù)(C語言函數(shù)):
strlen所作的僅僅是一個計數(shù)器的工作,它從內(nèi)存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內(nèi)存區(qū)域)開始掃描,直到碰到第一個字符串結(jié)束符'\0'為止,然后返回計數(shù)器值(長度不包含'\0')。
參考資料:strlen函數(shù) - 百科
C語言中字符串有一個結(jié)束符'\0',一個正常的字符串的最后一個字符都是'\0',在你定義一個常量字符串時就自動幫你加上去了,比如"abc"其實有4個字符{'a', 'b', 'c', '\0'},最后一個'\0'表示字符串到這就結(jié)束了,以防止內(nèi)存讀取越界,同時也以此來計算字符串長度,而不是再傳一個int參數(shù)表示字符串的長度。因此a在內(nèi)存中長度為6,但由于最后一個字符'\0'只是結(jié)束符,所有一般說長度時會忽略掉最后一個字符
string.h中提供了strlen函數(shù)可以方便地計算字符串的長度,不過注意strlen返回值的類型為size_t,x64下定義為uint64_t,x86下為uint32_t,所以記得進行類型轉(zhuǎn)換
第一種:調(diào)用C庫函數(shù)strlen(頭文件string.h)
#include stdio.h
#include string.h
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";
printf("%d\r\n", (int)strlen(a));
return 0;
}
第二種:手動計算長度
#include stdio.h
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";
char* p = a;
while ('\0' != *p)
{
p++;
}
printf("%d\r\n", (int)(p - a));
return 0;
}
最好的方法是自己編寫一個函數(shù)。如果你要偏方的話,我以前用過這樣一個偏方(VC6):先用itoa函數(shù)將其轉(zhuǎn)換成字符串,在用strlen函數(shù),求字符串的長度。 這兩個函數(shù):itoa是在stdlib.h中定義的. strlen是在string.h中的 例子: int num=999; char buff[20]; int len; itoa(num,buff,10); len=strlen(buff);
希望采納