清除C阵列

时间:2014-05-21 08:53:21

标签: c arrays clear

我有四个通过读取文件构建的数组:

file_name[r]        // char array (defined as file_name[10][10])
file_num[r]         // int array
file_scale[r]       // float array
file_source[r]      // int array

所以我想知道,如何清除/清空这些数组,以便在填充之前将它们清空?

4 个答案:

答案 0 :(得分:4)

声明时,任何全局数组都将初始化为零。对于其他情况,您可以使用标题<string.h>中的memset,如下所示:

memset(file_name, 0, sizeof(filename));

同样对于任何数组,当你声明它时,你可以零初始化它:

int a[r] = {0};

虽然在这里您只为第一个元素显式设置了值,但其余的值按标准填充0。

答案 1 :(得分:1)

&#34;清空数组&#34;意思? 数组总是大小相同。它不能被清空。

因此您必须将数据的实际长度存储在单独的变量int used中。 然后很容易&#34;空&#34;通过将此变量设置为0来设置数组。

如果你想设置默认值,那么你可以memset内存。 如果您将数据分组到POD结构中,这很容易。

MyType myType;
memset(&myType, 0, sizeof(myType));

答案 2 :(得分:1)

你可以做的是将所有数组设置为一个确定的值,但它们不是&#34;空的&#34;阵列。

你可以做的是,声明:

char file_name[10][10] = {{0}};
int file_num[r] = {0};
float file_scale[r] = {0};
int file_source[r] = {0};

使每个数组的每个变量都为0。

答案 3 :(得分:1)

如果只在程序启动时需要清空它们,如何使它们为空取决于您使用的编译器,因为它取决于编译器在执行代码之前放置的初始化代码。通常

int someArray[10] = {0};
char charArray[100] = {0};

正在将数组初始化为0.当你将一个本地数组声明为一个函数时,这也是可行的,该函数放在堆栈上并重置为0.

为了在运行时将先前创建的数组重置为0,有一个标准的C函数,我到目前为止所使用的所有编译器都在实现:

memset(myArray,0,sizeof(myArray));

当然你需要#include <string.h>已经说过了。