Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在写入一些信息后清理数组_C_Arrays_Pointers_Pipe - Fatal编程技术网

C 如何在写入一些信息后清理数组

C 如何在写入一些信息后清理数组,c,arrays,pointers,pipe,C,Arrays,Pointers,Pipe,我首先声明一个指针数组 int q,k; char ***schArray; schArray = malloc(sizeof(char**)*1000); for(q = 0; q < 1000; q++) { schArray[q] = malloc(sizeof(char*)*100); for(k = 0; k < 1000; k++) { schArray[q][k] = malloc(sizeof(char)

我首先声明一个指针数组

int q,k;
char ***schArray;
schArray = malloc(sizeof(char**)*1000);
    for(q = 0; q < 1000; q++) {
        schArray[q] = malloc(sizeof(char*)*100);
        for(k = 0; k < 1000; k++) {
            schArray[q][k] = malloc(sizeof(char)*100);
        }
    }

char buf[80]={0};
之后,我想清理指针数组的内容。我使用以下代码

schArray[commandnum][0]=NULL;
之后,我无法通过代码将任何数据写入schArray[commandnum][0]

strcpy(schArray[commandnum][0], buf);

上面的代码有错误吗?

我想您应该将分配字符串的第一个字符设置为
'\0'
。你可以用

schArray[commandnum][0][0] = '\0';
当前代码替换(并泄漏)指向malloc(sizeof(char)*100)


顺便说一句,在有人把我拉上来之前,请注意
sizeof(char)
保证为1,因此
malloc
可以简化为
malloc(100)

对不起,同样的问题,在使用命令priorityArray[counter\u internal][0]='\0'之后,我仍然无法编写新数据;当我尝试在该数组中写入一些新数据时,它没有显示响应。类型是否为
priorityArray
char***
?如果是,则需要执行
priorityArray[counter_internal][0][0]='\0'如果要更改已分配缓冲区的第一个字符。注释中的版本将部分指针覆盖到分配的缓冲区。
schArray[commandnum][0][0] = '\0';