C:使用memset检查一个数组元素在清零后是否为空



我正在尝试将一个数组元素清零并检查其状态,这样就不会再使用它了,但是,它似乎不起作用。

int main(int argc, char const *argv[]){
char pid[10][20] = {"abc", "dec", "dsz", "dfas"};
memset(pid[1],0,sizeof(pid[1]));
for (int i=0; i<4;i++){
printf("element %d: %sn", i, pid[i]);
}
if (pid[1] == 0){
printf("It's emptyn");
} else{
printf("Not emptyn");
}
return 0;
}

我也使用了memset(pid[1],NULL,sizeof(pid[1]))并检查了pid[1] == NULL,但它给出了相同的结果。任何帮助都将不胜感激!

pid[1]pid的一个元素。pidchar[20]的10元素阵列,因此pid[1]char的20元素阵列。

pid[1]是一个数组,因此在pid[1] == 0等表达式中使用时,它被转换为指向其第一个元素的指针。转换结果不会是NULL,因为它应该是一个有效的数组。

您要做的操作类似于检查字符串是否是像strcmp(pid[1], "") == 0这样的空字符串。

最新更新