C言語 文字列操作
トリム関数とリムーブ関数を作成してみました。改良点はありますでしょうか?
~~~~以下ソース~~~~
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *Trim(char *str);
char *Remove(char *str, char *rmv);
void main(void)
{
char str[10], rmv[10], *p;
int c;
/* " abcd "をトリムする */
strcpy(str, " abcd ");
printf("トリム前 |%s|\n", str);
p = Trim(str);
printf("トリム後 |%s|\n", str);
/* 指定文字列を削除する */
printf("削除する文字列を入力してください :");
scanf("%s", rmv);
Remove(str, rmv);
printf("削除後 |%s|\n", str);
exit(0);
}
char *Trim(char *str)
{
char space[] = " ";
char null[] = "";
int index = 0;
while(1){
if(strcmp(&(str[index]), null) == 0){
index--;
if(strncmp(&(str[index]), space, 1) == 0){
strcpy(&(str[index]), &(str[index]) + 1);
}else{
break;
}
}else{
if(strncmp(&(str[index]), space, 1) == 0 && index == 0){
strcpy(&(str[index]), &(str[index]) + 1);
}else{
index++;
}
}
}
return str;
}
char *Remove(char *str, char *rmv)
{
int c, size, i;
char *p;
c = '\0';
p = strchr(rmv, c);
size = p - rmv;
for(i = 0; i < size; i++){
c = (int)rmv[i];
p = strchr(str, c);
if (p != NULL) {
strcpy(&(str[p-str]), p + 1);
}
else{
printf("""%c""は見つかりませんでした\n", c);
}
}
return str;
}
お礼
ありがとうございました。