1樓:金色潛鳥
char a="ancdn\0";
字串長度為 5。
因為 字串長度 算到 字串結束符 以前,不包括 字串結束符。
例如:"123456\089abcd\0", 字串長度計算到第一次遇到的結束符\0,長度是 6, 後面不算。
-----
char a="ancdn\0";
佔記憶體 7 個位元組,雖然你加入了一個結束符,但 因為雙引號括起的字串,另含一個字串結束符,佔記憶體 7 個位元組 含了2個結束符。
如果是:
char a="ancdn"; 則佔記憶體 6 個位元組,因為雙引號括起的字串,另含一個字串結束符。
---streln(a) -- 計算字串 長度sizeof(a) -- 計算佔記憶體 位元組個數。
2樓:縱橫家
是6,如果已經給了長度,你能存字元的數目是長度-1,要留一個位給結束符
3樓:瓜條文庫
問字串a長度,答案 :6
char a="ancdn\0"等價於
char a=
(預設的結束符『 \0』不用算在內) 要是問定義的陣列a所佔空間,答案為:7 (包括預設的『\0』)
希望對您有所幫助!
4樓:遺失的時空
6,結束符「\0」在記憶體中也佔一個單位
c語言 若有定義「char a[ ]=" ";」,則陣列的長度是
5樓:蕭寒
結果為1,即一個空格為一個字元
char a[ ]=" ";
printf("%d",strlen(a));
6樓:
""中沒有空格的話,陣列長度是1;有空格的話,有幾個空格陣列長度就是幾+1!而如果問的是字串長度,那前者是0,後者是就是空格個數。
7樓:匿名使用者
""中間有空格嗎,沒有空格就是一個位元組'\0',有空格就再加一個位元組,倆個位元組.
8樓:金色潛鳥
陣列的長度 (陣列佔記憶體大小)用 sizeof(a) 測定,單位是 位元組個數。
一個空格加一個不可見字串結束符,陣列的長度/大小為 2#include
int main()
(附帶知識:字串長度用 strlen(a)測定)。
一道c語言題: 若定義:char s[10]="%d\0a\101";則strlen(s)的值為多少?
9樓:匿名使用者
為2.首先strlen不包含結束符\0,所以在檢查字元陣列時碰到\0就返回字元長度,所以有效長度為'%'和'd'.
10樓:匿名使用者
2字串是以字元'\0'結尾的,所以'\0'後面的會認為不存在strlen不包含結束符\0
strlen函式的
其原型應該是這樣的:int strlen(char *);它接受的是一個char*型別的引數,真不曉得你的這個是怎麼傳遞進去的。 strlen計算字串的長度例如"abc"的長度是3.
但是實際上如果將其放到字元陣列中的話,應該佔4個元素。因為字串是以字元'\0'結尾的,但是這個'\0'在我們的字串是隱藏的,我們看不到。實際上是有的.
例如:char a[4]="abc";//這裡陣列的元素個數至少應該是4,否則此字串不叫字串了,只能叫字元陣列了。
strlen判斷一個字串的結束就是以其末尾的'\0'為界限。其實現**可以模擬為以下:
int strlen(char *p)
所以他是不包括'\0'和後面的字元的。
c語言中,關於字串長度與字元陣列長度的問題。 20
11樓:
c語言約定字串以 '\0' 結尾,上述陣列末尾沒有 '\0' ,所以字串的長度無法確定。
12樓:看灰過來了
陣列長度指的是陣列的元素個數,字串長度是以『\0』為標誌來確定的,舉個例子:
char a[20]="abc";
陣列長度是20,而字串長度是3,隱含的'\0'不算在字串長度中。
13樓:匿名使用者
char a=;按陣列來說已經初始化了3個char型別,分配了3個char大小空間,而如果作為字串,記憶體空間給字元指標a只指定了三個連續的char大小的空間,然後a[2]後面的記憶體塊空間儲存的到底是什麼內容就是隨機的了,而字串以 '\0' 結尾,後面具體哪個是 '\0'完全不確定 ,所以字串的長度無法確定
14樓:zr稻草人
c語言中沒有字串型別,c風格字串用字元陣列來表示,並以『\0』結束,與字串操作相關的函式都要求被操作的字串滿足這一條件,你給出的字元陣列沒有最後的空字元,也就是說編譯器沒有一個標誌可以讓它結束對這個字串的長度的求解,所以不確定,陣列長度為3是因為只有3個元素,如果你這樣初始化:char a = "abc",編譯器會自動給你加一個空字元,這樣字串長度就能確定為3了(確定字串長度時編譯器忽略最後的空字元)
15樓:求知一人
1樓正解,你在初始化時給陣列a賦了3個值,所以其實a的型別應該是 char a[3],陣列長度為3,。
而字串就不一樣了,他必須以『\0』結尾,你的 『a』 『b』 『c』儲存在一個連續的地址上,字串的長度是從『a』的地址開始一直計數,當讀到『\0』時結束,雖然你沒有用到『c』後面的地址,但它會一直讀下去並計數,如果『c』後面的地址存的是『\0』那長度就是3了,如果不是就一直往下讀,所以說字串的長度不確定
16樓:取名想萬年
字串叫string吧?
17樓:匿名使用者
改正"看灰過來了":
char a[20]="abc";其中字串的長度為4,如果用strlen計算字串的長度,則是3,因為不加\0,如果用sizeof,就是4
c語言 計算字串長度
18樓:
作者你好!
首先要分清楚:字元陣列和字串的關係!
字串存放在陣列中,因此,一個字元陣列可以存放幾個串,單字串函式只認字串結束標誌'\0';
1. strlen(wer wer):字串為"wer_wer"這種字串常量,系統會在其後自動補上'\0';而求字串長度的函式strlen()只要遇見'\0';就返回函式值!
而且'\0'不算在其中!故返回值為7(空格也算一個字元!)
2. strlen(wer\0wer) 其中的字串為"wer\0wer"而strlen函式遇到'\0'即結束,故返回值為:3
3. '\0'不是空格,也不是回車!通過ascii碼錶,你可知道,'\0'是ascii碼值代表0(null);而空格的ascii碼為:
'\32' 32 回車的ascii碼值為'\13' 13
希望對你有所幫助!!!!
19樓:
c語言計算字串長度,可以手動計算也可以使用庫函式或者sizeof()操作符。
方法:自定義函式求長度
使用strlen()函式
使用sizeof()操作符
int cont_str(char *s)
strlen(str); //假設str為待求的字串陣列名
sizeof(str)/sizeof(str[0]); //假設str為待求的字串陣列名
strlen()函式求出的字串長度為有效長度,既不包含字串末尾結束符 『\0』;
sizeof()操作符求出的長度包含字串末尾的結束符 『\0』;
當在函式內部使用sizeof()求解由函式的形參傳入的字元陣列的長度時,得到的結果為指標的長度,既對應變數的位元組數,而不是字串的長度,此處一定要小心。
20樓:溜溜達達
c語言的字串是由字元陣列形式儲存的,並約定'\0'(ascii碼值為0)作為字串結束符。其長度為從字串開始,到'\0'結束,所有字元的個數,不包括'\0'本身。
要獲得字串長度,有兩種方法可以使用,使用庫函式strlen()。strlen宣告在string.h中,原型為int strlen(char *str);功能為求str的長度,並返回。
對於字串str, 可以用**求長度。當str[len]為0時,退出迴圈,退出後的len值就是str的長度。
拓展資料:使用strlen函式,包含在標頭檔案string.h裡,功能就是計算字串s的(unsigned int型)不包括'\0'在內的長度。
21樓:冰是沉默的水
計算長度有兩個函式:strlen sizeofstrlen 計算字串裡面一共有多少個字元sizeof 計算字串佔的總記憶體空間
如:char str[20]=;
strlen(str);等於 6
sizeof(str); 等於20
-物聯網校企聯盟技術部
22樓:樂跑小子
#include
#include
void main()
執行結果
input string
abcdefgh
你輸入的字串的長度為8
press any key to continue
23樓:匿名使用者
c語言中測試字串長度的函式是strlen()函式原型:
unsigned int strlen (char *s);
標頭檔案:
#include
引數說明:s為指定的字串;
功能說明:strlen()用來計算指定的字串s 的長度,不包括結束字元'\0';
返回值:返回字串s 的字元數;
注意:strlen() 函式計算的是字串的實際長度,遇到第一個'\0'結束。
示例:#include
#include
int main()
//輸出結果:strlen(str)=6
24樓:烈焰呼嚎
int strlenown(const char* psz) /*const使得字元陣列不被修改*/
這裡面psz++是指標的位移操作,移動指向位置的,字串常量對於c語言來說就是一種陣列嘛
而括號外面的「 * 」是解引用符號,其實意思就是取指標當前位置的值,而不是它的地址。
25樓:匿名使用者
#include
int strlen(char* s)
int main()
26樓:東江湖の水怪
在標頭檔案位置寫
#include
然後在後面用b=strlen(a);
b是一個int型的變數 a是字串或者字元陣列得首地址,也就是名字比如a[20],
27樓:啊黑夜傳說啊
就用了一個strlen函式
#include
#include
int main()
28樓:匿名使用者
/*filename的長度為 : 21
press any key to continue*/#include
int strlen(char s)
int main()
29樓:匿名使用者
加標頭檔案 string.h **如下:
char str = "hello world!";
int len = strlen(str);
30樓:匿名使用者
#include
main() 這樣
31樓:匿名使用者
你的if中的條件寫的有問題,應改為
if(c>='a'&&c<='z'||c>='a'&&c<='z')
這樣說明只有你輸入的是字母時,a的值才執行++操作。而你的條件c&&('a'<='z'&&'a'<='z'))後半部分('a'<='z'&&'a'<='z'))返回值永遠都是真,因為a和a永遠都比z和z小呀。前半部分的c是你輸入的值,如果不是輸入了0對應的ascii碼值48,那也永遠是真,所以a條件總是成立,a總是++;結果當然就會不對了
C語言,字串陣列的輸出,C語言 如何定義字串陣列
自我程式設計 getch 這句多餘,只是列印而已不需要這個函式接收字元。printf s n ch 0 printf s n ch 1 printf s n ch 2 這3句列印,第2個傳參和printf函式形參型別不一致,函式需要的是char 而你給的是char 12 執行可以,但會有警告。你想要...
c語言如何定義陣列存放字元和數字
興文博武數碼館 遇到字母和數字混合的陣列,定義的時候就不要定義為int型陣列,因為用 d輸出不了字母,輸出的是字母的ascii碼,不是輸出的字母本身,所以,要定義為 字串型的陣列。若不是裡面有個佔兩個字元的 10 可以直接用 s 輸出。但是因為有 字元 10 s輸出的是0 就不能用了,就只能用for...
c語言中定義字元陣列,其中存放的是什麼
在c c 中,陣列是指 連續分佈的記憶體單元。字串是一種字元陣列,比其他陣列特殊的地方是如果陣列被賦值 scanf,fread,fprintf,strcpy,nstrcpy 會在陣列末尾追加 0 在c語言中,陣列大小是不可知的。strlen s 只能算出從s開始到 0 的長度 總體來說,陣列未初始化...