删除c字符串中的字符
如何从c中的字符串中删除特定字符?删除c字符串中的字符
例如:如果字符串为“ABCD” 我需要删除索引1 的角色,那么结果应该是,“ACD”
我尝试:
void removeSymbol(char *line){
int i,j; char c;
for(i=0;i<strlen(line);i++){
c = *(line +i);
if(!(isdigit(c)||isalpha(c))){ strcpy((line+i),(line+i+1)); }
}
printf("%s\n",line);
}
我已经改变removeSymbol API的原型。我希望这下面的代码将满足您的要求
void removeSymbol(char *line, int index)
{
//Added as per comments
if ((index > 0) && (index <= strlen (line)))
{
//index-> index which needs to be removed.
// +1 is added in memmove last argument to move '\0' character also
memmove (&line[index-1], line + index, strlen (line)-index +1);
}
}
int main(void){
char symbol [] = "abcdefgh";
removeSymbol (symbol, 8);
printf ("%s\n", symbol);
}
我会添加一个检查来确保'index'是在界限内。 '0 2014-08-28 04:56:16
我会在函数**之外计算'strlen(line)'一次**,然后将它作为附加输入参数传递给函数。 – 2014-08-28 05:17:30
C程序员应该从0开始计算数字。'index == 0'应该删除'line'中的第一个字符。 – nodakai 2014-08-28 05:24:29
#include <stdio.h>
#include <string.h>
void removSymbol(char *,int);
main()
{
int index=1;
removSymbol("abcd",index);
}
void removSymbol(char *line,int index)
{
int i;
for(i=0;i<strlen(line)-1;i++)
{
if(i<index)
{
*(line+i) = *(line +i);
}
else
{
*(line+i) = *(line+i+1);
}
}
*(line+i+1)='\0';
printf("%s\n",line);
}
static inline void removeSymbol(char *line, size_t index){
memmove(&line[index], &line[index+1], strlen(&line[index]));
//printf("%s\n",line);
}
无效removeSymbol(字符*线){ INT I,J; char c;对于(i = 0; i
tharakamd
2014-08-28 04:17:20
可能重复[C从字符串中删除字符](http://*.com/questions/5457608/c-remove-character-from-string) – timrau 2014-08-28 04:17:38