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;
}
お礼
回答頂きありがとうございます。 port = deviceID.toInt(); これで、portに8883の数値を入れることができたことがシリアルモニタでわかりました。 ただ、元は const int port = 8883; というので宣言されていましたが、 long port; という宣言でないとコンパイルが通らなかったのが少し気にかかりますが、とりあえずこれで行ってみます。 助かります。