2017-02-12 20 views
4

我想查找是否有任何方法可以找到C中任何字符串的長度。
這是我如何做:
只用一行代碼就可以在c中查找字符串的長度而不使用strlen()函數?

#include <stdio.h> 
int main() 
{ 
    char s[10] = "hello"; 
    int i , len = 0; 
    for(i = 0; s[i] != '\0'; i++) 
    { 
     len++ 
    } 
    printf("length of string is: %d" , len); 
    return 0; 
} 

我想找到,如果有什麼辦法讓在短短的一行代碼串的長度。

+2

的調用'strlen'是一個班輪 – StoryTeller

+0

我想找到不使用外部函數的方式。 –

+0

相當愚蠢的問題,因爲C根本不在乎線路。預處理器雖然。這意味着你的整個程序可以只有兩行:include和main函數。 –

回答

8

你可以只是簡單的做到這一點:

for(len = 0; s[len] != '\0'; len++); 

所以在短短的一行代碼,你會得到存儲在len個字符串的長度。

+0

如果OP已經在main()的開頭聲明瞭'int len = 0',那麼'for (; s [len]!='\ 0'; len ++);'也行。 – RoadRunner

2

你可以通過調用strlen()函數來知道一行中字符串的長度。 它返回一個大小值爲size_t strlen的(字符*)

+0

我想找到沒有使用strlen()函數的長度。 –

+0

OP很清楚他想要*不使用strlen()* –

+1

'strlen()'實際返回size_t',而不是'int'。 – RoadRunner

3

您可以刪除s[len] != '\0';對比,使之更短:

for(len=0;s[len];len++); 
0

如果你只需要一個路線,這樣的事情也是可能的:

while (s[len] != '\0') len++; 

這是做這件事的另一種方式,但不是最讓人高興的看。

0

最起碼的版本:

#include <stdio.h> 

int main(void) 
{ 
    char s[10] = "hello", *p = s; 

    while(*p++); /* "counting" here */ 

    printf("The length of string '%s' is: %td" , s, p - s); 
} 

它打印:

The length of string 'hello' is: 6 
0

我認爲,這應該是最短的版本:

for(l=-1;s[++l];); 

這是18個字節,所以這是相當一個很好的代碼 - 高爾夫答案。不過,我寧願更經典的

for(len = 0; s[len]; len++) ; 

在真正的代碼。

2

只是這樣做:

for(len=0;s[len];len++); 

這將長度存儲在len

相關問題