c语言中怎么在数组中删除字符

用一些基本方法来删除
比如说我想删除10个里的第二个,然后在第8个上加上一个

我看没有太专业的回答,给你补充一点点。
原理上不再说了,删掉一个就是把后面移动到前面,10个里面删掉第二个,就相当于从第三个开始,连续8个,向前移动一个。
这个应当使用C语言库函数memmove,memmove(a+1, a+2, 8*sizeof(a[0]));
注意,千万不能使用memcpy,memmove是专门做这个事情的。
不懂的看手册吧,性能比自己写快好几倍,是汇编写的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-15
#include<iostream>
using namespace std;
void deleteChar(char *p,int num,int length);
void addChar(char *p, int num,char c,int length);
void main()
{
char a[50];
cin >> a;
int Length = strlen(a);//计算字符串的中长度
cout << "原数组为" << a << endl;
deleteChar(a,2,Length);
cout << "删除第二个字符后数组为 " << a <<endl;
addChar(a, 8, 'b',Length);
cout << "增加第八个字符后数组为 " << a << endl;
}
void deleteChar(char *p,int num,int length)//删除第num个位置上的字符
{
for(int i = num - 1; i< length ;i++)
{
p[i] = p[i + 1];
}
}
void addChar(char *p, int num, char c,int length)//在第num个位置上加一个字符
{
for(int j = length -1; j>= num ;j--)
{
p[j] = p[j - 1];
}
p[num - 1] = c;
}
忘记了写成了c++代码,要是c的话,把头文件改了,#include《stdio.h>,再把里面的cin和cout换成scanf和printf函数就好。
第2个回答  2012-08-15
这种题多自己想想,很简单的数组操作
思路是这样,如果错了,自己去拿张纸研究下怎么改吧,我没测试
int main()
{
int array[10]={11,12,13,14,15,16,17,18,19,20};
int delNum,addNum,Num,i;
printf{"请输入删除的数字序号和加入的数字序号,中间用空格隔开\n"};
scanf{"%d %d",&delNum,&addNum};
printf{"请输入加入的数字\n"};
scanf{"%d",&Num};

for(i = delNum - 1;i < addNum - 1;i ++)
{
array[i] = array[i + 1];

}
array[i] = Num;
printf("以下为结果\n");
for(i = 0;i < 10;i ++)
{
printf("%d",array);
printf("\n");

}
return 0;
}本回答被网友采纳
第3个回答  2012-08-15
int a[10];

for(int i=0 ; i<10; i++)
a[i] = i;

for(int i = 1; i < 9; i+=)
a[i] = a[i+1];

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网