我正在用C创建一个小的todo应用程序,我想从一个字符串中删除*
然后space
,然后检查{{1}是传递给函数的那个,然后我想知道如何从该行中删除字符,继承我循环的行的代码
lineNumber
答案 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 */
}
就像我说的那样,不是最好的解决方案,而是它的一种方法。