我有四个通过读取文件构建的数组:
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
所以我想知道,如何清除/清空这些数组,以便在填充之前将它们清空?
答案 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>
已经说过了。