【发布时间】:2011-11-26 10:25:40
【问题描述】:
我一直在做(用 C 语言)
char array[100];
if (array == NULL)
something;
这是非常错误的(由于我的程序不起作用,我终于学会了)。什么是等效的,我可以测试一个新数组以查看其中是否还没有放入任何内容?
另外,你如何让一个数组为空/清理它?
我知道还有其他关于这个主题的帖子,但我找不到一个直截了当的答案。
【问题讨论】:
我一直在做(用 C 语言)
char array[100];
if (array == NULL)
something;
这是非常错误的(由于我的程序不起作用,我终于学会了)。什么是等效的,我可以测试一个新数组以查看其中是否还没有放入任何内容?
另外,你如何让一个数组为空/清理它?
我知道还有其他关于这个主题的帖子,但我找不到一个直截了当的答案。
【问题讨论】:
用
声明的数组char array[100]
总是有 100 个字符。
“清理”可能是指为每个槽分配一个特定字符,例如字符'\0'。您可以通过循环或多个库调用之一来清除内存或移动内存块。
看看memset——它可以很好地“清除”或“重置”你的数组。
如果您使用的是字符串,其中是以零结尾的特殊字符数组,那么为了测试空数组,请参阅this SO question。否则,如果您有一个不打算表示文本的常规字符数组,请编写一个循环以确保数组中的所有条目都是您的特殊空白字符,无论您选择什么。
你也可以像这样声明你的字符数组:
char* array = malloc(100);
甚至
char* array = NULL;
但这有点不同。在这种情况下,数组为 NULL 表示“未分配数组”,这与“已分配数组但我尚未在其中放入任何内容”不同。
【讨论】: