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

时间:2011-06-15 04:43:24

标签: c arrays

假设我有一系列字符。说char x [100]

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

4 个答案:

答案 0 :(得分:10)

是的,C有函数strlen()(来自string.h),它给出了char数组中的字符数。怎么知道这个?根据定义,每个C“字符串”必须以空字符结尾。如果没有,你无法知道字符串有多长,或者换句话说,数组的哪些内存位置的值实际上是“有用的”,哪些只是一些转储。知道了这一点,sizeof(your_string)返回数组的大小(以字节为单位),而不是字符串的长度。

幸运的是,大多数创建“字符串”或读取输入并将其存储到char数组中的C库字符串函数将自动在末尾附加空字符以终止“字符串”。有些人没有(例如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);
}

如您所见,通过搜索数组中的第一个null character找到字符串的结尾。

答案 1 :(得分:1)

这完全取决于你获得输入的地方。很可能strlen会做到这一点。

答案 2 :(得分:0)

每次在数组中输入一个带有空字符的字符串。你只需要找到数组中空字符的位置。

您可以手动执行此操作,否则 strlen()将解决您的问题。

答案 3 :(得分:-1)

char ch;

int len;

while((ch = getche())!='13')

{

LEN ++;

}

或通过%s

从char转换为字符串后使用strlen