No.17575![]() |
文字列の中に文字を埋め込め 投稿者---素人(2004/10/27 23:10:56) |
||
お世話になります。 題名の件で、文字列の中にスペースがあったら、文字を追加したい。 例えば、"test xls doc" → "test and xls and doc"という形で。 何かアドバイスを頂けないでしょうか? int i ; int j ; char buf[256] ; for( i = 0, j = 0 ; buf[i] ; i ++ ) { if( buf[i] == ' ' ) { /* 文字を埋め込む */ } } 宜しくお願い申し上げます。 |
No.17576![]() |
Re:文字列の中に文字を埋め込め 投稿者---επιστημη(2004/10/28 07:20:02) |
||
>題名の件で、文字列の中にスペースがあったら、文字を追加したい。 >例えば、"test xls doc" → "test and xls and doc"という形で。 #include <stdio.h> #include <string.h> int main() { char input[] = "test xls doc"; const char* replacement = " and "; char result[100]; result[0] = '\0'; char* p; for ( p = strtok(input, " "); p; p = strtok(0, " ")) { strcat(result, p); strcat(result, replacement); } result[strlen(result)-strlen(replacement)] = '\0'; printf("[%s]", result); return 0; } |
No.17581![]() |
Re:文字列の中に文字を埋め込め(解決) 投稿者---素人(2004/10/28 09:30:45) |
||
おはようございます。 回答して頂きありがとうございます。 文字列の中にうまく文字を埋め込むことが出来ました。 こんな素人な私が、恥ずかしい限りです。 大変勉強になり、ありがとうございました。 >>題名の件で、文字列の中にスペースがあったら、文字を追加したい。 >>例えば、"test xls doc" → "test and xls and doc"という形で。 >#include <stdio.h> >#include <string.h> > >int main() { > char input[] = "test xls doc"; > const char* replacement = " and "; > char result[100]; > result[0] = '\0'; > char* p; > for ( p = strtok(input, " "); p; p = strtok(0, " ")) { > strcat(result, p); > strcat(result, replacement); > } > result[strlen(result)-strlen(replacement)] = '\0'; > printf("[%s]", result); > return 0; >} |
No.17579![]() |
Re:文字列の中に文字を埋め込め 投稿者---かずま(2004/10/28 09:23:50) |
||
> 題名の件で、文字列の中にスペースがあったら、文字を追加したい。 > 例えば、"test xls doc" → "test and xls and doc"という形で。 出力配列が入力文字列と異なる場合 #include <stdio.h> void sub(const char *in, const char *add, char *out) { const char *p; do { if (*in == ' ') { *out++ = ' '; for (p = add; *p; *out++ = *p++) ; } } while (*out++ = *in++); } int main(void) { char buf[256]; sub("test xls doc", "and", buf); printf("[%s]\n", buf); return 0; } ---------------------------------------------------------------------- 入出力が同じ配列の場合 #include <stdio.h> void sub(char *in_out, const char *add) { char *in, *out; const char *p; int len; for (p = add; *p; p++) ; len = p - add; for (out = in = in_out; *in; in++, out++) if (*in == ' ') out += len + 1; *out = '\0'; while (out > in) { *--out = *--in; if (*in == ' ') { for (p = add + len; p > add; *--out = *--p) ; *--out = ' '; } } } int main(void) { char buf[256] = "test xls doc"; sub(buf, "and"); printf("[%s]\n", buf); return 0; } |