C语言中strlen()函数和sizof()函数分别怎么用?区别是什么 c语言中sizeof()和strlen()用法上有什么区别呢...

c++\u4e2dstrlen()\u51fd\u6570\u548csizeof()\u51fd\u6570\u6709\u4ec0\u4e48\u533a\u522b\uff1f

\u3000\u3000strlen:\u662fC\u6807\u51c6\u5e93\u4e2d\u7684\u5b57\u7b26\u4e32\u51fd\u6570\uff0c\u7528\u4e8e\u7edf\u8ba1\u5b57\u7b26\u7684\u4e2a\u6570\u3002
\u3000\u3000sizeof:\u662fC\u8bed\u8a00\u4e2d\u7684\u8fd0\u7b97\u7b26\uff0c\u786e\u5207\u7684\u8bf4\u662f\u4e00\u4e2a\u7f16\u8bd1\u65f6\u8fd0\u7b97\u7b26\uff0c\u7528\u4e8e\u7edf\u8ba1\u7c7b\u578b\u6216\u8005\u53d8\u91cf\u6240\u5360\u7684\u5185\u5b58\u5b57\u8282\u6570\u3002\u793a\u4f8b\uff0c\u4ee532\u4f4d\u7cfb\u7edf\u4e3a\u4f8b\u3002
char *str = "hello";
strlen(str); //\u5b83\u7684\u503c\u662f5\uff0c\u56e0\u4e3ahello\u8fd9\u4e2a\u5b57\u7b26\u4e32\u67095\u4e2a\u5b57\u7b26
sizeof(str); //\u5b83\u7684\u503c\u662f4\uff0c\u56e0\u4e3achar *\u662f\u4e00\u4e2a\u6307\u9488\u7c7b\u578b\uff0c\u5b83\u53604\u4e2a\u5b57\u8282\u3002
sizeof("hello"); //\u5b83\u7684\u503c\u662f5\uff0c\u662f\u56e0\u4e3ahello\u67095\u4e2a\u5b57\u7b26\uff0c\u6bcf\u4e00\u4e2a\u5b57\u7b26\u53601\u4e2a\u5b57\u8282\u3002
int a[2] = {0};
sizeof(a); //\u5b83\u7684\u503c\u662f8\uff0c\u56e0\u4e3aa\u4e2d\u67092\u4e2aint\u578b\u53d8\u91cf\uff0c\u6bcf\u4e2aint\u578b\u53604\u4e2a\u5b57\u8282\uff0c\u6240\u4ee58\u5b57\u8282

sizeof\u662f\u64cd\u4f5c\u7b26\uff0c\u4e0d\u662f\u51fd\u6570\u3002\u5b83\u540e\u9762\u7684()\u5e76\u4e0d\u662f\u5fc5\u987b\u7684\uff0c\u6ca1\u6709\u6b67\u610f\u65f6\u5c31\u4e0d\u5fc5\u5199\u4e0a\u4e86\u3002sizeof\u64cd\u4f5c\u7b26\u8ba1\u7b97\u7684\u662f\u7cfb\u7edf\u4e3a\u5b83\u540e\u9762\u7684\u53d8\u91cf\u6216\u7c7b\u578b\u540d\u5206\u914d\u7684\u7a7a\u95f4\u5927\u5c0f\uff0c\u65e0\u8bba\u5176\u4e2d\u662f\u5426\u5b58\u50a8\u4e86\u6709\u7528\u6570\u636e\u3002
strlen()\u662f\u5e93\u51fd\u6570\uff0c()\u4e2d\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\u6307\u9488\u6216\u5b57\u7b26\u4e32\u5e38\u91cf\uff0c\u5b83\u8fd4\u56de\u7684\u662f\u68c0\u6d4b\u5bf9\u8c61\u4e2d\u7b2c\u4e00\u4e2a'\0'\u524d\u7684\u5b57\u7b26\u4e2a\u6570\uff0c\u4e0d\u542b'\0'\u3002
\u4e0b\u9762\u7684\u4ee3\u7801\u53ef\u80fd\u5bf9\u6b64\u89e3\u60d1\uff1a
//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"#include "string.h"int main(void){ char s[50]="1234",p[100]={'f','j','k','d','s','a','l','\0','1','2','3','4','5','\0'}; printf("sizeof(s) = %d\n",sizeof s);//\u8fd9\u91ccs\u6ca1\u6709\u52a0(),\u4e5f\u6b63\u786e printf("strlen(s) = %d\nstrlen(p) = %d\n",strlen(s),strlen(p)); //\u4e0a\u53e5\u68c0\u6d4bp\u65f6\u9047\u5230\u7b2c\u4e00\u4e2a'\0'\u5c31\u7ed3\u675f\u4e86 return 0;}

1、用法:
strlen(char* pstr);//求的是字符串的实际长度
sizeof(类型说明符,数组名或表达式) 或sizeof ( 变量名)
比如说有以下数据类型:int arr[10] ,a; char *str="hello world"; sizeof(arr)/sizeof(a)/sizeof(str)都是可以的,但是只能使用strlen(str),而不能strlen(arr);
2、区别:
2.1 sizeof()是C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。
2.2 strlen()求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
总结的说来sizeof的适用范围更广,但是在返回实际的字符数组中的数据是,strlen()更方便,因为它返回的是实际的字符串长度,而sizeof是返回数组大小。

strlen函数的参数是字符串,而sizeof函数的参数是类型或者变量,如果传入的是变量,则返回的是变量类型的大小,如果传入的是数组,则返回的是数组类型的大小乘以数组的元素个数,如果传入一个字符串指针,返回的是指针的大小。这两个新手容易混淆。如果仍有什么不明白,请追问。
记得采纳啊

本来不想发言的,但看到楼上的回答说strlen()计算字符串时连'\0'也算上,我顿时无语。 那你调试一下看看,看看是不是算上'\0'? strlen()是遇到'\0'就结束计算,是不计'\0'的。这一点要记住。 sizeof()是计算变量或者类型占用内存空间的字节数。 如果有 char str[] = "asdfg"; printf("%d\n", strlen(str)); printf("%d\n",sizeof(char)); printf("%d\n",sizeof(str)); 结果会是 5 1 6 从上面就可以看出strlen()是不计'\0' char是类型,可以用sizeof()操作,char占用一个字节 因为str是变量,所以可以用sizeof()计算它占用内存的字节数,又一个字符是占用一个字节内存,所以数组str占用6个字节 以上就是sizeof()和strlen()使用的区别

strlen() 是统计字符串的长度,要加上'\0'例如strlen("abcd");这时返回值是5因为还有一个'\0' sizof()是统计一个字符串占用的字节数例如sizeof("abcd");这里返回值是4,它不加最后的'\0'

简单的说 strlen() 是统计一个字符串有几个字符,这时要算上'\0'。 sizof()是统计一个字符串占用了几个字节

  • c璇█,strlen鍜sizeof
    绛旓細Sizeof涓嶴trlen鐨鍖哄埆涓庤仈绯(杞級1.sizeof鎿嶄綔绗︾殑缁撴灉绫诲瀷鏄痵ize_t锛屽畠鍦ㄥご鏂囦欢涓璽ypedef涓簎nsigned int绫诲瀷銆傝绫诲瀷淇濊瘉鑳藉绾冲疄鐜版墍寤虹珛鐨勬渶澶у璞$殑瀛楄妭澶у皬銆2.sizeof鏄畻绗︼紝strlen鏄嚱鏁銆3.sizeof鍙互鐢ㄧ被鍨嬪仛鍙傛暟锛宻trlen鍙兘鐢╟har*鍋氬弬鏁帮紝涓斿繀椤绘槸浠''\0''缁撳熬鐨勩俿izeof杩樺彲浠ョ敤鍑芥暟鍋...
  • C璇█涓璼trlen(s)鏄粈涔堟剰鎬?S鏄竴涓暟缁!
    绛旓細strlen(s)琛ㄧず姹傚瓧绗︿覆s鐨闀垮害銆strlen鍑芥暟鍘熷瀷锛歩nt strlen(char *s锛;澶存枃浠讹細string.h 鏍煎紡锛strlen 锛瀛楃鏁扮粍鍚嶏級鍔熻兘锛氳绠楃粰瀹氬瓧绗︿覆鐨勶紙unsigned int鍨嬶級闀垮害锛屼笉鍖呮嫭'\0'鍦ㄥ唴 璇存槑锛氳繑鍥瀞鐨勯暱搴︼紝涓嶅寘鎷粨鏉熺NULL銆傚弬鑰冧唬鐮侊細include<string.h>#include<stdio.h>int main(){ char s...
  • C璇█缂栫▼涓,杈撳叆涓涓瓧绗︿覆鏁扮粍,濡備綍寰楀嚭璇ユ暟缁勭殑闀垮害?
    绛旓細浣跨敤C璇█鍑芥暟strlen()鍑芥暟鍘熷瀷锛歟xtern unsigned int strlen(char *s);锛屽湪Visual C++ 6.0涓紝鍘熷瀷涓簊ize_t strlen( const char *string );锛屽叾涓璼ize_t瀹為檯涓婃槸unsigned int,鍦╒C6.0涓彲浠ョ湅鍒拌繖鏍风殑浠g爜:typedef unsigned int size_t;銆傚ご鏂囦欢锛歴tring.h 鍔熻兘锛氳绠楀瓧绗︿覆s鐨(unsigned int鍨...
  • C璇█涓殑strlen鍑芥暟
    绛旓細strlen()鍙槸缁熻瀛楃涓鐨闀垮害锛岀粺璁″埌'\0'缁撴潫锛屼絾涓嶅寘鎷'\0'锛岃繖涓笌sizeof()涓嶄竴鏍枫傚浜庣敤鍙屽紩鍙峰紩璧锋潵鐨勫瓧绗︿覆锛岀郴缁熼粯璁ゆ渶鍚庝竴浣嶅瓧绗︿负'\0'锛屽浣犺嚜宸卞畾涔夌殑锛歝har a[]="china";char b[]={"china"};鍙﹀锛屾暟缁勫垵濮嬪寲杩樺彲浠ユ槸涓涓瓧绗︿竴涓瓧绗﹁祴鍊硷紝濡傦細char c[]={'c','h','i...
  • c璇█缂栫▼ 缂栧啓姹傚瓧绗︿覆闀垮害鐨勫嚱鏁int strlen(char*s),鍦ㄤ富鍑芥暟涓皟鐢...
    绛旓細鎬濊矾锛氬洜涓哄瓧绗︿覆閮芥槸浠'\0'浣滀负缁撴潫鏍囧織锛屾墍浠ュ彲浠ヤ粠瀛楃涓鐨绗竴涓綅缃紑濮嬮亶鍘嗭紝鐩村埌鍑虹幇'\0'鍋滄閬嶅巻锛屽苟姣忔涓嬫爣鍚庣Щ锛屽瓧绗︿覆鐨勯暱搴﹀姞1锛屾渶鍚庤繑鍥炲瓧绗︿覆闀垮害銆傚弬鑰冧唬鐮侊細include "stdio.h" int strlen(char *s){//姹傚瓧绗︿覆闀垮害鍑芥暟 int n;for(n=0;s[n]!='\0';n++);return n;} ...
  • C璇█涓sizeof鍜strlen鍑芥暟鍖哄埆鍦ㄥ摢?
    绛旓細杩欎釜缁撴灉鏄笉瀹鐨锛屽畠浼氫粠aa棣栧湴鍧涓鐩存壘涓嬪幓锛岀洿鍒伴亣鍒'\0'鍋滄銆傝宻izeof()杩斿洖鐨勬槸鍙橀噺澹版槑鍚庢墍鍗犵殑鍐呭瓨鏁帮紝涓嶆槸瀹為檯闀垮害銆2銆佸弬鏁扮被鍨 sizeof鍙互鐢ㄧ被鍨嬪仛鍙傛暟锛宻trlen鍙兘鐢╟har*鍋氬弬鏁帮紝涓斿繀椤绘槸浠''\0''缁撳熬鐨勩3銆佺被鍨 sizeof鏄搷浣滅锛堝叧閿瓧锛夛紝strlen鏄嚱鏁銆
  • c璇█瀛楃涓插鐞鍑芥暟鏈夊摢浜
    绛旓細2. 鐢╯trncpy鍙互璧嬪兼寚瀹氱殑浣嶇疆鐨勫瓧绗︺俿trncpy(str1,str2,3);灏唖tr2涓殑绗3涓瓧绗﹀鍒跺埌str1涓5銆乻trcmp鍑芥暟鈥斺斿瓧绗︿覆姣旇緝鍑芥暟 涓鑸舰寮忥細strcmp(瀛楃涓1锛屽瓧绗︿覆2);浣滅敤锛氱敤鏉ユ瘮杈冧袱涓瓧绗︿覆鐨勫樊寮傘傚叿鏈変笉鍚岀殑姣旇緝瑙勫垯銆6銆strlen鍑芥暟鈥斺旀祴瀛楃涓查暱搴鐨勫嚱鏁 涓鑸舰寮忥細strlen(瀛楃鏁扮粍);濡...
  • C璇█鍏充簬strlen()鍑芥暟鐨勯棶棰
    绛旓細杩欓噷閬囧埌瀛楃涓茬粨鏉熺涓嶆槸鍋剁劧鐨銆傚浜庢暟缁勶紝C璇█瑙勫畾锛岃嫢娌℃湁鍒濆鍖栧垪琛紝鍒欎粎鍒嗛厤绌洪棿锛屽搴斿唴瀛樺尯鍩熶负闅忔満鍊硷紙瀹為檯鎯呭喌瑙嗙紪璇戝櫒鑰屽畾锛屼緥濡侻icrosoft C缂栬瘧鍣―ebug妯″紡涓嬩細鐢0xcc濉厖杩欎簺鍖哄煙浠ヤ究杈ㄨ锛夛紱鑻ュ瓨鍦ㄥ垵濮嬪寲鍒楄〃锛屽垯鎸夊垵濮嬪寲鍒楄〃鐨勫悇椤圭殑鍊间緷娆″~鍏呰嚦鏁扮粍涓紱闀垮害涓嶅鐨勶紝椤哄簭鍒濆鍖栫粨鏉熷悗锛...
  • c璇█涓璼trlen鍑芥暟鐨勪綔鐢ㄥ疄渚
    绛旓細strlen锛堬級浣滅敤鏄眰瀛楃涓查暱搴︼紝鑰屽瓧绗︿覆浠0涓虹粨鏉燂紝鎵浠ワ紝abcd\0ef\0g鍒扮涓涓猏0锛屽瓧绗︿覆灏辩粨鏉熶簡锛宎bcd闀垮害鏄4,鎵浠ヨ繑鍥炲间负4.
  • c璇█缂栫▼鍑芥暟
    绛旓細/*function: 娴嬮噺瀛楃涓查暱搴 in: 闇瑕佹祴闀垮害鐨瀛楃涓 out: 瀛楃涓查暱搴 / int strlen(string str){ assert( str != NULL ); // #include <assert.h> char *ch = NULL;int iLength = 0;ch = str;while ( *ch != '\0'){ ch = ch + 1;iLength = iLength + 1;} retu...
  • 扩展阅读:python中str()函数 ... str()函数 ... str()函数功能 ... strlen函数怎么用c语言 ... strlen函数用法简单例子 ... strlen函数中 怎么计算 ... c语言strlen函数例子 ... c语音strlen函数 ... c语言中strlen的用法举例 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网