从C中删除字符串中的字符

时间:2011-04-18 22:47:47

标签: c string

  

可能重复:
  Remove characters from a string in C

我正在用C创建一个小的todo应用程序,我想从一个字符串中删除*然后space,然后检查{{1}是传递给函数的那个​​,然后我想知道如何从该行中删除字符,继承我循环的行的代码

lineNumber

2 个答案:

答案 0 :(得分:3)

听起来您正在询问如何从字符串的开头中删除前导'* '。您有两种选择:

  • 您可以将每个字符移回两个空格,例如:

    if(startsWithStarSpace) {
      int i;
      for(i = 2; i < len; ++i)
        str[i-2] = str[i];
      str[i] = '\0';
    }
    
  • 或者如果你的字符串是动态分配的,你只需将指针向前移动两个字符(确保稍后将旧指针保存到free())。

答案 1 :(得分:0)

一种简单的方法(注意我知道这不是最好的方法,我确信有很多标准函数):

if(lineNumber == todoNumber) {
 char buff[len];
 char* bptr = buff;
 char* lptr = line;
 for(;lptr!=NULL;) {
  if(*lptr!='*')
   *bptr++ = *lptr++
  else{
   lptr++;lptr++; /*skip over * and space */
  }
 }
 strcpy(line,buff); /* replace line with updated version */
}

就像我说的那样,不是最好的解决方案,而是它的一种方法。