首页 > 解决方案 > 如何在c程序中的数组中插入多个元素?

问题描述

我可以在数组中插入一个元素,但我想知道是否可以使用 c 程序在数组中插入多个(两个或三个 ..)元素。我试了一下,没有问题或错误,但它不起作用。

这是我试图制作一个可以在数组中插入多个元素的程序的代码:

#include<stdio.h>

int main(){

    
    int size,i;
    
    printf("Enter array length - ");
    scanf("%d",&size);
    
    int array[size];

    printf("Enter array elements : \n");
    for(i=0; i<size; i++){
        scanf("%d",&array[i]);
    }    

    int el_no; //el_no means elemnet no which user should input
    printf("How many element you want to insert - ");
    scanf("%d",&el_no);

    int element[el_no];

    printf("Element value - ");
    for(i=0; i<el_no;i++){
     scanf("%d",&element[i]);  
    }
    int index[el_no];

    printf("Index no - ");
    for(i=0; i<el_no;i++){
    scanf("%d",&index);   
    }

    for(i=0; i<el_no;i++){
        for(i=index[i]; i< size+el_no;i++){
            array[i+1]=array[i];
        }
    }
    for(i=0; i<el_no; i++){
        array[index[i]]=element[i];
    }
    for(i=0; i<size+el_no; i++){
        printf("%d\t",array[i]);
    }
    return 0;
}

标签: c

解决方案


正如我试图在我的评论中显示的那样,您没有为index数组指定索引。在那个循环中,你正在scanf寻找&index,这是错误的论点scanf。你的编译器应该给你一个警告:

    warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int (*)[el_no]' [-Wformat=]
   32 |     scanf("%d",&index);
      |            ~^  ~~~~~~
      |             |  |
      |             |  int (*)[el_no]
      |             int *

尽管有警告,但最有可能发生的是您在循环中输入的每个值都存储在index[0]. 你需要改变那个循环

for(i=0; i<el_no;i++){
    scanf("%d",&index);   
}

for(i=0; i<el_no;i++){
    scanf("%d",&index[i]); // <-- note the [i] addition
}

您在上一个循环中已正确完成此操作

for(i=0; i<size; i++){
    scanf("%d",&array[i]);
}

这可能不是唯一的问题,但这是一个问题,而且评论太长了。


推荐阅读