gpt4 book ai didi

c - 如何在 C 中的数组的任何部分设置 "empty"元素

转载 作者:行者123 更新时间:2023-12-02 08:27:36 25 4
gpt4 key购买 nike

我正在做一个在数组中插入数字的程序,这里很简单,例如:

if(menu==1){
system("cls");
result=lastposition(array,20);

if(result==25){
printf("\n Error! The array is FULL!");
printf("\n Press Enter to continue");
getch();
} else{

printf("\n\n\tOption 1 selected: \n");

printf("\n Type the number to add it to the array: ");
scanf("%i",&value);

if(array[0]!=NULL){
printf("\n The first space is already filled, moving itens");

changeplace(array,20,value);

printf("\n Items moved with success!\n");
}else {
array[0] = value;
}

printf("\n Number %i added!\n",value);
printf(" Press to continue.\n");
getch();
}

所以,它所做的是,你输入一个数字,它会插入一个 20 个位置的数组,在它的第一个位置(这就是为什么函数“lastposition”在那里,检查数组中填充的最后一个位置),如果第一个位置还没有填充(NULL),它在第一个位置添加,如果已经填充,“chageplace”函数将所有值向右移动,然后添加数字!

我的问题是,当我声明数组时,我将其所有值设置为 NULL,如下所示:int array[20]={NULL};!但是在 C 语言中,NULL 将其所有值更改为 0,如果有人在我的程序中添加 0 作为值,假设数组已经有一个 5 和一个 10,就像这样 [5][10][ 0][0][0]...[0],我将添加零,如下所示:[0][5][10][0][0].. .[0],直到没问题,但是因为 C 认为 NULL=0,所以当我尝试添加另一个数字时,它将检查第一个位置是否已经填充(它将检查它是否为 NULL,或 0,它将返回 NULL [0]),如果我尝试在其上添加 7,它将替换 0(添加的数字,而不是 NULL)并且它会像 [7][5] [10][0][0]...[0]

有人知道如何解决这个问题吗?以某种方式能够在函数中添加一个 0,而不会因为它被认为是 NULL 而被下一个数字替换?那里有一个真正的“无”,而不是“0”。

PS:我不能只将随机数放入数组中,使其与 0 不同,原因有两个,首先,菜单的选项 3 显示 vector [因此显示随机数,以及 2,我的函数会认为它已经被数字填充了!

PS²:“lastposition”函数返回的“25”只是我设置的一个随机数,如果数组的最后一个位置是 20(意味着它已经满了)...

最佳答案

这在 C 中根本不可能。一种解决方法可能是将数组元素更改为一个结构,该结构的字段 used 是 bool 值,字段 data 是诠释。

关于c - 如何在 C 中的数组的任何部分设置 "empty"元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com