|
> 第一引数で指定された文字列の先頭または終端から、
> 第二引数で指定された文字列を削除する関数を作成しました。
>
> 第二パラメタで可変個の文字列を指定できるように改造したいのですが、
> どのように改造したらよいか、思いつきません。
> <改造後>
> パラメタ例:
> 第一引数:"( )abc.))"
> 第二引数:"(",")","."," ",","
> 実行後文字列:abc
先頭でも、終端でもない ")" が削除されていますね。ということは、
改造で作るより新規で作ったほうがよいと思います。
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
void strdel(char *buf, const char *str)
{
char *p = buf; int len = strlen(str);
while ((p = strstr(p, str)) != NULL)
strcpy(p, p + len);
}
void strdelEX(char *buf, ...)
{
char *p; va_list ap;
va_start(ap, buf);
while ((p = va_arg(ap, char *)) != NULL && *p != '\0')
strdel(buf, p);
va_end(ap);
}
int main()
{
char str[] = "( )abc.))";
puts(str);
strdelEX(str, "(", ")", ".", " ", ",", NULL);
puts(str);
return 0;
}
|