2011-06-15 63 views
1

假設我有一組字符。說炭X [100]C中的char數組如何找到有效輸入的實際長度?

現在,我把來自用戶的輸入並將其存儲在字符數組英寸用戶輸入少於100個字符。現在,如果我想對有效值進行一些操作,我如何查找char數組中有多少有效值。有沒有C函數或某種方法來查找有效值的實際長度,在這種情況下,它的值將小於100。

+0

我相信你從字符轉換爲字符串後使用strlen正在尋找'strlen':http://www.cplusplus.com/reference/clibrary/cstring/strlen/ – 2011-06-15 04:45:18

+0

在運行strlen之前確保數組是空終止的,否則您可能會漫遊到未知的內存塊中。 – devyndraen 2011-06-15 04:47:54

回答

10

是,C具有功能strlen()(來自string.h中),它給你的字符數在字符數組。它如何知道這一點?根據定義,每個C「字符串」必須以空字符結尾。如果沒有,你無法知道字符串或其他字的長度,數組的哪些內存位置的值實際上是「有用的」,哪些只是一些轉儲。知道這一點,sizeof(your_string)返回數組的大小(以字節爲單位),而不是字符串的長度。

幸運的是,即打造「串」或讀取輸入並存儲到一個字符數組在年底會自動附加空字符大多數C庫字符串函數,終止「字符串」。有些不(例如strncpy())。請務必仔細閱讀他們的描述。

此外,請注意,這意味着所提供的緩衝區必須至少比指定的輸入長度長一個字符。所以,就你而言,你必須實際提供長度爲101的字符數組來讀取100個字符(一個字節的差別是空字符)。

實例:

size_t strlen(const char * str) 
{ 
    const char *s; 
    for (s = str; *s; ++s); 
    return(s - str); 
} 

正如所看到的,一個串的端部通過搜索數組中的第一null character發現:

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 
    char *string = "Hello World"; 
    printf("%lu\n", (unsigned long)strlen(string)); 
    return 0; 
} 

strlen()如定義。

1

這完全取決於你在哪裏得到了輸入。最有可能的strlen將做的伎倆。

0

您在陣列中的末端以空字符輸入一個字符串每次。你只需要找到數組中的空字符。

您可以手動執行此操作,否則,strlen()將解決您的問題。

-1

char ch;

INT LEN;

而((CH = getche())= '13'!)

{

LEN ++;

}

或%S

相關問題