假設我有一組字符。說炭X [100]C中的char數組如何找到有效輸入的實際長度?
現在,我把來自用戶的輸入並將其存儲在字符數組英寸用戶輸入少於100個字符。現在,如果我想對有效值進行一些操作,我如何查找char數組中有多少有效值。有沒有C函數或某種方法來查找有效值的實際長度,在這種情況下,它的值將小於100。
假設我有一組字符。說炭X [100]C中的char數組如何找到有效輸入的實際長度?
現在,我把來自用戶的輸入並將其存儲在字符數組英寸用戶輸入少於100個字符。現在,如果我想對有效值進行一些操作,我如何查找char數組中有多少有效值。有沒有C函數或某種方法來查找有效值的實際長度,在這種情況下,它的值將小於100。
是,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()如定義。
這完全取決於你在哪裏得到了輸入。最有可能的strlen
將做的伎倆。
您在陣列中的末端以空字符輸入一個字符串每次。你只需要找到數組中的空字符。
您可以手動執行此操作,否則,strlen()將解決您的問題。
char ch;
INT LEN;
而((CH = getche())= '13'!)
{
LEN ++;
}
或%S
我相信你從字符轉換爲字符串後使用strlen正在尋找'strlen':http://www.cplusplus.com/reference/clibrary/cstring/strlen/ – 2011-06-15 04:45:18
在運行strlen之前確保數組是空終止的,否則您可能會漫遊到未知的內存塊中。 – devyndraen 2011-06-15 04:47:54