亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教下是說只能char[]數組類型或char指針類型,可以使用strlen函數求其長度?

請教下是說只能char[]數組類型或char指針類型,可以使用strlen函數求其長度?

忽然笑 2023-03-15 17:13:39
如果是int型,例如:int len[3];len[0] = 1;len[1] = 2;printf("%s\n", strlen(len));打印是0?謝謝!
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

strlen函數所作的僅僅是一個計數器的工作,它從內存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字符串結束符'\0'為止,然后返回計數器值(長度不包含"\0")。

基本簡介
原型:extern unsigned int strlen(char *s);,在Visual C++ 6.0中,原型為size_t strlen(const char *string);,其中size_t實際上是unsigned int,在VC6.0中可以看到這樣的代碼:typedef unsigned int size_t;
頭文件:string.h
格式:strlen (字符數組名)
功能:計算字符串s的(unsigned int型)長度,不包括'\0'在內
說明:返回s的長度,不包括結束符NULL。
相關函數:
TCHAR.H routine _UNICODE & _MBCS not defined_MBCS defined_UNICODE defined_tcslen
程序舉例
舉例1:(在Visual C++6.0中運行通過)
#include <string.h>
#include<stdio.h>
int main(void)
{
char *s="Golden Global View";
printf("%s has %d chars",s,strlen(s));
getchar();
return 0;
}


查看完整回答
反對 回復 2023-03-18
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

1.xx[2][8]的內存是連續分配的
2.
01234567
0dAe,BfC.
1CCbbAA\0
本來在第一行最后應該是\0的,但是位置占滿了,所以\0就到第二行了(由于內存的連續分配)
但是繼續向第二行寫數據的時候,C就把第一行的\0覆蓋了,到最后再加上第二的\0
而strlen只認起始字符d然后開始數,直到\0為止
所以把dAe,BfC.CCbbAA都數上了,數到第二行的\0結束,所以是14個

查看完整回答
反對 回復 2023-03-18
  • 2 回答
  • 0 關注
  • 132 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號