gpt4 book ai didi

c - 如何在C中检测未初始化的字符串

转载 作者:行者123 更新时间:2023-12-04 18:20:42 25 4
gpt4 key购买 nike

我有一个 char x[16]我还没有初始化,我需要测试是否有东西分配给 x或者它是如何在运行时创建的。我该怎么做?谢谢

示例代码

int main(int argc, char** argv) {
char x[16];

//<other part of the code>
if(x is an empty char array (not assigned anything) then skip the next line) {
//blank
}else {
//<rest of the code>
}
return 0;}

PS:我试过 memchar(x, '\0', strlen(x)) , if(x[0] == '\0')if(!x[0])但它不能按我的意愿工作,因为 char 数组不包含 \0默认。

最佳答案

您必须像这样初始化它:

char x[16] = { 0 }; // note the use of the initializer, it sets the first character to 0, which is all we need to test for initialization.

if (x[0] == 0)
// x is uninitialized.
else
// x has been initialized

如果您的平台可用,另一种选择是 alloca。 ,它在堆栈上为您分配数据。你会像这样使用它:
char *x = NULL;

if (x == NULL)
x = alloca(16);
else
// x is initialized already.

因为 alloca在堆栈上分配,您不需要 free您分配的数据,使其比 malloc 具有明显优势

关于c - 如何在C中检测未初始化的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10767529/

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