gpt4 book ai didi

检查 const char * 是否以零结尾

转载 作者:行者123 更新时间:2023-11-30 21:29:04 25 4
gpt4 key购买 nike

我正在一个图书馆工作。我有一个 const char * ,它应该作为输入以零终止,但由于某种原因它并不总是以零终止。

只要不是零终止的未定义行为被调用 - 有时也会崩溃。

尽管这是输入错误的问题 - 我不想崩溃,所以:

我的问题:有什么方法可以知道 const char * 是否以零结尾?或非零终止? (我没有得到 const char * 的长度作为输入)。

附注好吧,我发现有一种方法可以知道它何时不是零终止 -> 我崩溃了:-)我想在崩溃之前弄清楚这一点:)

最佳答案

空终止字符串的全部目的是将 \0 作为最后一个字符,以标记字符串的结尾,从而有办法确定字符的结尾数组。

如果您不知道字符串的长度,并且字符串内容中没有任何内容可以确定其长度(例如 \0 等终止符),那么您可以如果没有读取分配的内存的风险,就不能访问它。

访问分配的内存块之外的数据是 C 中未定义的行为,您无法采取任何措施来防止可能的崩溃。如果您的库的函数被记录为采用以 null 结尾的字符串作为输入,用户有责任为您提供正确的输入,否则如果您崩溃,则不是您的错。

请注意,作为引用,所有正确的 C 字符串都应该是一个以 null 结尾的字符数组,并且所有标准字符串操作函数都在 string.h 中定义(strcpystrcmp 等)如果使用除正确的空终止字符串之外的任何内容调用,也会以相同的方式运行。

关于检查 const char * 是否以零结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34880972/

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