c語言strlen函數用法

用法:#include <string.h>

舉例:

// strlen.c

#include <syslib.h>

#include <string.h>

main()

{char *s="Golden Global View";

clrscr();

printf("%s has %d chars",s,strlen(s));

getchar();

return 0;}

(1)cstrlen語言擴展閱讀:

函數原型

externunsignedintstrlen(char*s);

在Visual C++ 6.0或Dev-C++中,原型為

size_tstrlen(constchar*string);

其中size_t實際上是unsigned int,在VC6.0或Dev-C++中可以看到這樣的代碼

typedefunsignedintsize_t;

頭文件:string.h或cstring

格式:strlen (字元指針表達式)

功能:計算給定字元串的(unsigned int型)長度,不包括''在內

說明:返回s的長度,不包括結束符NULL。

Ⅱ C語言中strlen什麼用法

strlen為C語言庫函數,包含於string.h中,作用為計算一個字元串(字元數組)中元素的個數,內即從數組頭部計容數,直到遇到字元串結束符\0為止,計數結果不包括\0.
其聲明為:
unsigned int strlen(char *s);
比如定義字元串:
char *p = "this is for testing";
調用
strlen(p);
返回的結果就是p中元素的個數,即19。

需要注意的是,strlen並不是絕對安全的,如果在傳入的字元數組的合法范圍內,不存在結束符\0,那麼strlen函數會一直訪問下去,超出數組范圍,即出現越界訪問。
所以使用strlen時,程序員必須確認參數字元數組中包含\0值,否則會出現不可預知後果。

Ⅲ C語言里關於Strlen()

因為由char food[]="Yummy"定義的food有5個元素,所以strlen(food)=5,故ptr=food+strlen(food)就是ptr=food+5而不是+4。ptr=food+5使ptr指向了food[5],亦即ptr=&food[5],而*ptr=food[5]。由內於數組下容標是從0開始的,所以food[5]已經是字母y後面的結束符'\0'了。--ptr是使ptr指向了food[4],即ptr=&food[4]、*ptr=food[4],而不等於--food[4],因為food[4]是數組的第5個元素y,而這時ptr是y的地址……

Ⅳ c語言:strlen str len這三個是什麼東西詳區分答一下,謝謝~

strlen -- 計算字元串長度的庫函數名。
str -- 通常,程序員喜歡用它作 字元串 變數名。它是 string(英文詞 字元串 的縮寫)
len -- 通常,程序員喜歡用它作 變數名。它是 length(英文詞 長度 的縮寫)。
例如:
char str[20]="I am a student";
int len;
len = strlen(str);
printf("the string length is: %d",len);

Ⅳ C語言中strlen(s)是什麼意思S是一個數組!

strlen(s)表示求字元串復s的長度。

strlen函數制原型:int strlen(char *s);

頭文件:string.h

格式:strlen (字元數組名)

功能:計算給定字元串的(unsigned int型)長度,不包括''在內

說明:返回s的長度,不包括結束符NULL。

參考代碼:

#include<string.h>
#include<stdio.h>
intmain()
{
chars[100]="GoldenGlobalView";
printf("%shas%dchars",s,strlen(s));
return0;
}
/*
運行結果:
GoldenGlobalViewhas16chars
*/

Ⅵ c語言strlen函數問題

strlen實際上是,從參數表示的地址往後找,找到第一個'',即串尾。然後計算''至首地址的「距離」,即隔了幾個字元,從而得出長度。

char x[]={0xBC,0xDD,0xCA};中,實際上是定義了一個char型的數組,而由於x[0],即0xBC開始往後找,一直到0xCA,都沒'',所以會繼續往後。當然,實際上往後找到的是其他值。

改char x[]={0xBC,0xDD,0xCA,0x00};後,應該就是3了。

(6)cstrlen語言擴展閱讀:

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

函數原型

extern unsigned int strlen(char *s);

在Visual C++ 6.0或Dev-C++中,原型為

size_t strlen(const char *string);

,其中size_t實際上是unsigned int,在VC6.0或Dev-C++中可以看到這樣的代碼:

typedef unsigned int size_t;

頭文件:string.h或cstring

格式:strlen (字元數組名)

功能:計算給定字元串的(unsigned int型)長度,不包括''在內

說明:返回s的長度,不包括結束符NULL。

參考資料:strlen-網路

Ⅶ c語言中strlen是什麼意思

strlen:計算字元串長度的庫函數名。

str:通常,程序員喜歡用它作 字元串 變數名。它是string(英文詞字元串的縮寫)。

len:通常,程序員喜歡用它作 變數名。它是 length(英文詞長度的縮寫)。

例如:

char str[20]="I am a student";

int len;

len = strlen(str);

printf("the string length is: %d",len);

(7)cstrlen語言擴展閱讀:

函數原型

externunsignedintstrlen(char*s);

在Visual C++ 6.0或Dev-C++中,原型為size_tstrlen(constchar*string);,其中size_t實際上是unsigned int,在VC6.0或Dev-C++中可以看到這樣的代碼:

typedefunsignedintsize_t;

頭文件:string.h或cstring

格式:strlen (字元指針表達式)

功能:計算給定字元串的(unsigned int型)長度,不包括''在內

說明:返回s的長度,不包括結束符NULL。

strlen(char*)函數求的是字元串的實際長度,它求得方法是從開始到遇到第一個'',如果你只定義沒有給它賦初值,這個結果是不定的,它會從aa首地址一直找下去,直到遇到''停止。

Ⅷ 在C語言中Strlen是什麼意思

Sizeof與Strlen的區別

1.sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsignedint類型。
該類型保證能容納實現所建立的最大對象的位元組大小。

2.sizeof是算符,strlen是函數。

3.sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以''\0''結尾的。
sizeof還可以用函數做參數,比如:
short f();
printf("%d\n", sizeof(f()));
輸出的結果是sizeof(short),即2。

4.數組做sizeof的參數不退化,傳遞給strlen就退化為指針了。

5.大部分編譯程序 在編譯的時候就把sizeof計算過了 是類型或是變數的長度這就是sizeof(x)可以用來定義數組維數的原因
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;

6.strlen的結果要在運行的時候才能計算出來,時用來計算字元串的長度,不是類型占內存的大小。

7.sizeof後如果是類型必須加括弧,如果是變數名可以不加括弧。這是因為sizeof是個操作符不是個函數。

8.當適用了於一個結構類型時或變數, sizeof 返回實際的大小,
當適用一靜態地空間數組, sizeof 歸還全部數組的尺寸。
sizeof 操作符不能返回動態地被分派了的數組或外部的數組的尺寸

9.數組作為參數傳給函數時傳的是指針而不是數組,傳遞的是數組的首地址,
如:
fun(char [8])
fun(char [])
都等價於 fun(char *)
在C++里參數傳遞數組永遠都是傳遞指向數組首元素的指針,編譯器不知道數組的大小
如果想在函數內知道數組的大小, 需要這樣做:
進入函數後用memcpy拷貝出來,長度由另一個形參傳進去
fun(unsiged char *p1, int len)
{
unsigned char* buf = new unsigned char[len+1]
memcpy(buf, p1, len);
}

我們能常在用到 sizeof 和 strlen 的時候,通常是計算字元串數組的長度
看了上面的詳細解釋,發現兩者的使用還是有區別的,從這個例子可以看得很清楚:

char str[20]="0123456789";
int a=strlen(str); //a=10; >>>> strlen 計算字元串的長度,以結束符 0x00 為字元串結束。
int b=sizeof(str); //而b=20; >>>> sizeof 計算的則是分配的數組 str[20] 所佔的內存空間的大小,不受裡面存儲的內容改變。

上面是對靜態數組處理的結果,如果是對指針,結果就不一樣了

char* ss = "0123456789";
sizeof(ss) 結果 4 ===》ss是指向字元串常量的字元指針,sizeof 獲得的是一個指針的之所佔的空間,應該是

長整型的,所以是4
sizeof(*ss) 結果 1 ===》*ss是第一個字元 其實就是獲得了字元串的第一位'0' 所佔的內存空間,是char類

型的,佔了 1 位

strlen(ss)= 10 >>>> 如果要獲得這個字元串的長度,則一定要使用 strlen

Ⅸ C語言中的strlen函數

strlen()只是統計字元串的長度,統計到'\0'結束,但不包括'\0',這個與sizeof()不一樣。
對於用雙引號引起來的字內符串,系統默認最容後一位字元為'\0',如你自己定義的:
char a[]="china";
char b[]={"china"};
另外,數組初始化還可以是一個字元一個字元賦值,如:
char c[]={'c','h','i','n','a'};
char d[]={'c','h','i','n','a','\0'};
但系統不會自動給你在最末位添加'\0』
所以在統計char c[]={'c','h','i','n','a'}時,統計到a時,系統還沒找到\0,所以會繼續統計,直到找到'\0'為止。所以就有你第三個值為11的情況,這個根據不同的運行環境而定。

Ⅹ c語言中strlen()怎麼用

strlen所作的僅僅是一個計數器的工作,它從內存的某個位置(可以是字元串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字元串結束符'\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。

因為字元串是以字元'\0'結尾的,但是這個'\0'在我們的字元串是隱藏的,我們看不到。實際上是有的.例如:
char a[4]="abc";//這里數組的元素個數至少應該是4,否則此字元串不叫字元串了,只能叫字元數組了。
strlen判斷一個字元串的結束就是以其末尾的'\0'為界限。其實現代碼可以模擬為以下:
int strlen(char *p)
{
int i=0;
while(*p++)i++;
return i;
}
所以他是不包括'\0'這個字元的。