c語言strlen判斷字元長度的問題

時間 2021-09-02 07:17:47

1樓:小八

不是6應該是5吧

因為你輸入的長度是4再加'\0'所以是5

2樓:匿名使用者

#include

#include

main()

試試這樣的,你要是一個字元一個字元的輸入,if (a[i]=='\n')就沒意義了。

3樓:匿名使用者

你定義的字元陣列char [4] 他的長度就是5+上你的scanf 輸入後有個\0就6了

scanf("%s",a);這樣

4樓:

c語言中,存放字串是以\0作為結束的。由於a陣列中沒有\0(即數值0),所以strlen測試a的長度,是從該陣列的起始地址向後掃描,直到在記憶體中遇到了0,認為字串結束,返回從陣列的起始地址到0之間的長度。

把程式中的:if (a[i]=='\n')i--;

改為:if (a[i]=='\n')

當你輸入的字元不超過3個時,一定正確。如果輸入了4個,\0就無處可放,還是出錯。

通常,把儲存字串的陣列說明得大些,如:char a[1024];

讀入字串時,通常用(1)scanf("%s",a); (2) gets(a);讀入,而不像你這樣用迴圈一個字元一個字元讀入。

c語言中判斷字串的長度不用strlen的問題

5樓:小學僧

0的和\0的as碼可不是一樣的哦。。

0 的是 30, \0的是0, 真正意義上的0。。。

6樓:匿名使用者

字串中的'0'的ascii碼是'\x30',不是'\0'

7樓:匿名使用者

數字0的ascii碼是0x30好不好,\0應該是0x00。

如何在c語言中計算字串長度

8樓:溜溜達達

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'在內的長度。

9樓:

c語言計算字串長度,可以手動計算也可以使用庫函式或者sizeof()操作符。

方法:自定義函式求長度

使用strlen()函式

使用sizeof()操作符

int cont_str(char *s)

strlen(str); //假設str為待求的字串陣列名

sizeof(str)/sizeof(str[0]); //假設str為待求的字串陣列名

strlen()函式求出的字串長度為有效長度,既不包含字串末尾結束符 ‘\0’;

sizeof()操作符求出的長度包含字串末尾的結束符 ‘\0’;

當在函式內部使用sizeof()求解由函式的形參傳入的字元陣列的長度時,得到的結果為指標的長度,既對應變數的位元組數,而不是字串的長度,此處一定要小心。

10樓:1024程式設計師

c語言經典例子之計算一個字串的長度

11樓:匿名使用者

用strlen得到整個長度,再用迴圈語句找到空格位置,然後計算得到兩部分的長度即可。

12樓:匿名使用者

可以做一個小的程式來實現,這樣在你的程式中呼叫就可以的 我做了一個 你先看看

#include

int main()

count++;

}printf("%d",count);

getchar();}

13樓:匿名使用者

用一個子函式就可以了

int sr(const char s)

14樓:泰和劉老師黃

用迴圈語句控制,用if判斷.以空格為分界分別計算就可以

15樓:花晨溪谷

直接用int()來算

16樓:啊黑夜傳說啊

就用了一個strlen函式

#include

#include

int main()

在c語言求字元長度的問題,strlen與sizeof怎麼計算出來的長度不是我們理解的那樣?

17樓:匿名使用者

sizeof(p)計算的是p變數的

bai大小du

zhi由於p是指標,p的大小就是4位元組dao,它不是求內容的長度,

18樓:匿名使用者

strlen獲取字串bai的長度。

每個中文du字元佔用zhi兩個位元組,所以dao中國是strlen是2+2=4;

英文字元儲存一版個位元組,故

權zg是1+1=2

sizeof用於求取佔用的空間。

但是注意,你求取的物件不是字串本身,而是變數本身。p和q兩個變數均為指標,指標在計算機中佔用4個位元組,所以最後兩個都是4.

19樓:匿名使用者

strlen的結果是bai

正確的,而dusizeof是在編譯的時候處理的,zhi這個dao時候編譯專器還不知道你這個指標指向的內容呢,因為你屬這個指標指向中國,是在執行的時候才處理的,好好想想,就是sizeof是在編譯的時候就已經算出結果了,不管你程式執行的時候指向**,它都是那個值。如果你寫sizeof(”中國”)那結果就是5了

以上純屬手打,望採納

C語言怎樣判斷合法轉義字元

墨汁諾 0 是八進位制的轉移字元,如果看到 087這就是非法的,0x 表示十六進位制,還有一些必備的如 n r 這些。和普通的字元判斷相同,比如判斷和 a 是否相同,ch a 那麼判斷轉義一樣,如ch n 邏輯表示式的結果只有兩個,true和false,所有的邏輯表示式都一樣,為真就是true,否則...

c語言問題關於字元陣列的長度問題

哎。strlen 是在string.h裡面的,getch 是在conio.h裡面的,不過,我用的是cfree,至於其它的編譯器,我就不知道了。至於你的問題,當你仔細看看他們的結果,你就會有結論了。很明顯,strlen q 的值是一樣的,不同的是p的字元長度 而它們的區別,就在於,它們一個有陣列的長度...

c語言中測試字串長度的函式,C語言中測試字串長度的函式

你的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,那也...