gpt4 book ai didi

检查非空终止字符串的有效性

转载 作者:行者123 更新时间:2023-12-01 08:14:17 25 4
gpt4 key购买 nike

我在思考 null 终止符和非 null 终止数组时遇到了麻烦。

假设我有两个声明:

const char *string = "mike";

const char string[4] = {'m', 'i', 'k', 'e'};

我理解第一个声明是因为在 C 中,字符数组以空值终止,因为它被定义为内存中以空值终止的连续字符 block ,我可以使用 strlen 进行检查>.

我遇到的问题是理解没有空终止符的第二个声明。

如何检查没有空终止符的字符串的有效性? (例如,如果数组中有其他值怎么办?)

最佳答案

How can I check for validity of a string with no null terminator?

您需要知道数组边界,以便查看边界内是否包含以 null 结尾的字符串。以下是您如何在示例中执行此操作:

const char string[4] = {'m', 'i', 'k', 'e'};
int good = 0;
for (int i = 0 ; i != sizeof(string) ; i++) {
if (string[i] == '\0') {
good = 1;
break;
}
}
if (good) {
printf("String '%s' is null-terminated.\n", string);
} else {
printf("String is not null-terminated; cannot print.\n");
}

尽管 C 库仅支持以 null 结尾的字符串,但您可以使用不以 null 结尾的字符数组,只要您可以访问它们的大小(即它是一个数组,而不是指针)。例如,您可以像这样打印数组:

printf("'%.*s'\n", sizeof(string), string);

关于检查非空终止字符串的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com