繁体   English   中英

C 中的字符数组。 如何找到有效输入的实际长度?

[英]The char array in C. How to find actual length of valid input?

假设我有字符数组。 说字符 x[100]

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

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

幸运的是,大多数创建“字符串”或读取输入并将其存储到字符数组中的 C 库字符串函数将自动在末尾附加 null 字符以终止“字符串”。 有些没有(例如strncpy() )。 请务必仔细阅读他们的描述。

另外,请注意这意味着提供的缓冲区必须至少比指定的输入长度长一个字符 因此,在您的情况下,您实际上必须提供长度为 101 的 char 数组才能读取 100 个字符(一个字节的差异是针对 null 字符)。

示例用法:

#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 字符来找到字符串的结尾。

这完全取决于你从哪里得到输入。 strlen很可能会成功。

每次在数组中输入一个字符串时,都会以 null 字符结尾。 您只需要找到数组中的 null 字符在哪里。

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

字符 ch;

国际化;

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

{

伦++;

}

或在通过 %s 将字符转换为字符串后使用 strlen

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM