C++删字符
给一个字符串char filename[20];内容是"[folder]",我要删除第一个字符(或者第几个字符),该怎么做?
答案:你好!!!<br> <br>代码如下:不知是不是你想要的,参考一下吧。<br> #include<string.h><br> <br>int main()<br> {<br> int alloct;<br> char filename[20]="[folder]";<br> cout<<"请输入删除字符的位置:"<<endl;<br> <br> while(cin>>alloct)<br> {<br> if(alloct<strlen(filename) && alloct>0)<br> break;<br> cout<<"输入的位置不符合要求,请重新输入!!!"<<endl;<br> <br> <br> }<br> <br>for(int i=alloct;i<strlen(filename);i++)<br> filename[i-1]=filename[i];<br> cout<<"删除后的字符串是:"<<filename<<endl;<br> <br> return 0;<br> }<br> 测试:<br> 请输入删除字符的位置:<br> 5<br> 删除后的字符串是:[foler]]<br> Press any key to continue<br> <br> 请输入删除字符的位置:<br> 0<br> 输入的位置不符合要求,请重新输入!!!<br> 2<br> 删除后的字符串是:[older]]<br> Press any key to continue<br> <br> 请输入删除字符的位置:<br> 10<br> 输入的位置不符合要求,请重新输入!!!<br> 6<br> 删除后的字符串是:[foldr]]<br> Press any key to continue
这要用到《数据结构》知识,看看你就明白了
//给你个函数,函数声明自己写下。
int delChar (char *lpChar,const int destChar) //param1 指定字符串,param2预删除字符位置
{
int strl;
strl=strlen(lpChar);//源字符串长度
if(destChar>0&&destChar<=(strl))//有效区间删除
{
int nFlag;
char cTmp;
nFlag=destChar-1;//数组中字符的位置
// for (nFlag=destChar-1;nFlag<strl+1;nFlag++)//for和while都可以,选一
while(lpChar[nFlag]!='\0')
{
lpChar[nFlag]=lpChar[nFlag+1];//移动指字符
nFlag++;
}
//lpChar[nFlag-1]='\0';
return strlen(lpChar);
}
else
return 0;
}
//字符删除过程
//1 2 3 4 5 6 \0 原数据,预删除第三个字符
//1 2 4 4 5 6 \0
//1 2 4 5 5 6 \0
//1 2 4 5 6 6 \0
//1 2 4 5 6 \0 \0
只需要移动后面的字符就可以了.
比如你要删除第2个字符 'o',则是 memmove(&filename[1],&filename[2],strlen(filename)-2);
上一个:C++程序分析
下一个:一个c++问题