当前位置:编程问答 > C/C++ >

C++删字符

问题:给一个字符串char filename[20];内容是"[folder]",我要删除第一个字符(或者第几个字符),该怎么做?
答案:
你好!!!<br> <br>代码如下:不知是不是你想要的,参考一下吧。<br> #include&lt;string.h&gt;<br> <br>int main()<br> {<br> int alloct;<br> char filename[20]="[folder]";<br> cout&lt;&lt;"请输入删除字符的位置:"&lt;&lt;endl;<br> <br> while(cin&gt;&gt;alloct)<br> {<br> if(alloct&lt;strlen(filename) && alloct&gt;0)<br> break;<br> cout&lt;&lt;"输入的位置不符合要求,请重新输入!!!"&lt;&lt;endl;<br> <br> <br> }<br> <br>for(int i=alloct;i&lt;strlen(filename);i++)<br> filename[i-1]=filename[i];<br> cout&lt;&lt;"删除后的字符串是:"&lt;&lt;filename&lt;&lt;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++问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,