c - 如何在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;
}
解决方案
正如我试图在我的评论中显示的那样,您没有为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]);
}
这可能不是唯一的问题,但这是一个问题,而且评论太长了。
推荐阅读
- vba - 将文本框多行传递给 xml
- azure - 多个与指定模式匹配的包:D:\a\r1\a\**\*.zip。请限制搜索模式
- python - 如何用 Pandas Dataframe 中的每一列绘制每一列?
- javascript - 我想将输入字段中写入的文本保存在 localStorage
- http - prometheus 用于提取 SPARQL 端点指标
- reactjs - React 的 useSelector 和对象数组
- bash - “libiomp5.so 无法打开共享对象文件”如何在 Windows 10 中解决问题?
- chatbot - 如何在 rasa 中发出用户输入错误消息?
- uwp - 如何将 UWP 的 WebAccountManager 和 AccountSettingsPane 用于 Xbox 应用?
- sql - 根据日期范围将数据逐周重组