当我尝试向数组中添加元素时出现问题,我总是得到itemID已经存在,我试图解决它,但是我无法
这是我的功能

int AddNewItem(){
    FILE* f = fopen("items.txt", "a");
        if(f == 0) {
                printf("file is not present :\n");
                return 0;
        }
        int ItemID,ItemQuantity,PricePerUnit, i = 0,flag = 0;
        int ItemI[10], ItemQ[10],Price[10];

        while(fscanf(f,"%d%d%d",&ItemI[i],&ItemQ[i],&Price[i])>0){
                ++i;
        }
        printf("Enter itemID: ");
        scanf("%d",&ItemID);
        for(i=0; i<10; i++)
        {
                if(ItemI[i]==ItemID)
                {
                        flag = 1;
                        printf("the itemID already exists\n");
                        break;
                }
                else{
                    ItemI[i+1]=ItemID;

                }
            }

        printf("Enter The price per unit ");
        scanf("%d",&Price[i]);

        fclose(f);
        return ;
}


谢谢
这是我的档案

1007 5 30

1004 4 10

1003 3 20

1002 2 10

1006 4 40

1005 5 50

1001 1 70

1008 6 20

1010 4 90

1009 3 10

最佳答案

那是因为:

            if(ItemI[i]==ItemID)


假设该语句在第一次迭代时为假。 'else'将被执行:

            else {
                ItemI[i+1]=ItemID;
            }


因此,ItemI [1]被设置为ItemID。在下一次迭代中,当“ i”等于1时,“ if”语句始终变为true。这就是为什么它显示“ itemID已经存在”的原因

关于c - 在数组中添加项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47743942/

10-10 23:36