C中的char数组如何查找有效输入的实际长度?

问题描述

| 假设我有字符数组。说char x [100] 现在,我从用户获取输入并将其存储在char数组中。用户输入少于100个字符。现在,如果我想对有效值进行一些操作,如何查找char数组中有多少个有效值。是否有C函数或某种方法来查找有效值的实际长度,在这种情况下,该长度将小于100。     

解决方法

        是的,C具有函数
strlen()
(来自string.h),可为您提供char数组中的字符数。它怎么知道的?根据定义,每个C \“ string \”必须以空字符结尾。如果不是,您将无法知道字符串有多长,或者换句话说,数组的哪些存储位置实际上是“有用的”,哪些只是一些转储的值。知道这一点后,“ 1”将返回数组的大小(以字节为单位),而不是字符串的长度。 幸运的是,大多数创建\“ strings \”或读取输入并将其存储到char数组的C库字符串函数都会在末尾自动附加空字符以终止\“ string \”。有些则不然(例如
strncpy()
)。请务必仔细阅读其说明。 另外,请注意,这意味着提供的缓冲区必须比指定的输入长度至少长一个字符。因此,在您的情况下,您实际上必须提供长度为101的char数组以读取100个字符(一个字节的差是空字符)。 用法示例:
#include <stdio.h>
#include <string.h>

int main(void)
{
    char *string = \"Hello World\";
    printf(\"%lu\\n\",(unsigned long)strlen(string));
    return 0;
}
strlen()定义为:
size_t strlen(const char * str)
{
    const char *s;
    for (s = str; *s; ++s);
    return(s - str);
}
如您所见,通过搜索数组中的第一个空字符可以找到字符串的结尾。     ,        这完全取决于您在何处获得输入。
strlen
很可能会成功。     ,        每次您在数组中输入一个字符串时,都以空字符结尾。您只需要查找数组中的空字符在哪里。 您可以手动执行此操作,否则,strlen()将解决您的问题。     ,        char ch; 英伦 while((ch = getche())!= \ '13 \') { len ++; } 或在%s从char转换为字符串后使用strlen