C语言中怎样实现对数组数据的删除、修改?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中怎样实现对数组数据的删除、修改?相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
typedef struct Node
int a,b;
node;
node c[100];
int n;
void print()
int i;
printf("\n当前数据:\n");
for(i=1;i<=n;i++)
printf("第%d组:a=%d,b=%d\n",i,c[i].a,c[i].b);

printf("\n\n");
//输出
void setnum()
int i;
printf("输入n,表示共有n组数据:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("输入第%d组数据的两个值a、b,用空格隔开:\n",i);
scanf("%d%d",&c[i].a,&c[i].b);

//设置数据
void remove()
int i,j;
printf("输入i,表示要删除第i数据:\n");
scanf("%d",&i);
for(j=i;j<=n-1;j++)
c[j]=c[j+1];
//循环覆盖,让后一个覆盖前一个,所以j最大值取n-1
n--;//结构体中的元素减少1个
//删除数据
void chang()
int i,aa,bb;
printf("输入i,a,b,表示要将第i组数据修改成a、b:\n");
scanf("%d%d%d",&i,&aa,&bb);
c[i].a=aa;
c[i].b=bb;//直接赋值修改
//修改数据
main()
int m;
while(1)
printf("输入:1-输入数据,2-修改数据,3-删除数据\n 4-输出数据,0-退出\n");
scanf("%d",&m);
if(m==0) break;
else if(m==1) setnum();
else if(m==2) chang();
else if(m==3) remove();
else if(m==4) print();

参考技术A

#include <stdio.h>

// 删除长度为len的数组dat中索引为idx的元素。
void remove(int *dat, int *len, int idx)

    (*len)--;
    if (idx < 0 || idx >= *len)
        return;
    for (int i = idx; i < *len; i++)
        dat[i] = dat[i+1];


void output(int *dat, int len)

    for (int i = 0; i < len; i++)
        printf("%d ", dat[i]);
    printf("\\n");


int main()

    int a[10]= 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, len = 10;
    remove(a, &len, 5);
    output(a, len);
    remove(a, &len, 2);
    output(a, len);
    return 0;

以上是关于C语言中怎样实现对数组数据的删除、修改?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎样实现对数组数据的删除、修改?

C语言中,怎样判断一个数组中是不是有重复元素呢?最好用程序实现

c语言中怎样实现对二维数组元素进行赋值并输出。

怎样在C语言中修改字符串的一个字符的值

c语言中怎样让一个有10个元素的数组输出5个元素后换行后再输出另外五个函数

c语言中怎样输入多组数据 每组数据个数不确定 每组数据占一行