こんにちは以下のようにポインタ同士を連結して
文字列を作りたいのですが、コンパイルエラーが出てしまいます。
やり方を教えて頂きたいのですが、どなたか宜しくお願いします。
char *a;
char *b;
a = abc;
b = def;
a = a+b;
printf(a = %s\n,a);
> ポインタ同士を連結して文字列を作りたいのですが
できません。
下で、string+ポインタの質問もされていましたが、STL等に手を出す以前に、標準関数や基本
的な
部分を理解されていますか? 基本が出来ていないと必ず行き詰まります。
そもそも文字列を連結した際に、元の文字列の長さの合計分(+1)の領域が必要になる(ので、
自分で
用意したりする必要がある)ということを理解していますか?
基本を知らずにstd::string等を使っているなら、上記のようなメモリに関する部分はライブラ
リの中に
隠蔽されてしまっているのでわからないままになってしまいますよ。
#もし、そんなこたぁわかってるよ、という場合は無視して下さい。
では、
char a[256];
char b[256];
a = abc;
b = def;
char配列同士を連結させるにはどうすれば良いのでしょうか?
どなたかヒントだけでも宜しくお願いします。
>char配列同士を連結させるにはどうすれば良いのでしょうか?
C でなんとかするのなら、排列同士を連結する事は面倒なので、中身を連結する場合は
char a[256];
char b[256];
char c[512];
strcpy(a, abc);
strcpy(b, def);
strcpy(c, a);
strcat(c, b);
でしょう
「char配列同士を連結させたものを格納する領域」を用意します。
char a[256];
char b[256];
char c[256];
strcpy( a, abc );
strcpy( b, def );
sprintf( c, %s%s, a, b );
何がなんでもaにアペンドしたいなら、
char a[256];
char b[256];
strcpy( a, abc );
strcpy( b, def );
sprintf( a+strlen(a), %s, b );
あー、strcat()ってあったねぇ。sprintf()ばっかりつかってるもんだから忘れてた。
>char a[256];
>char b[256];
>
>a = abc;
>b = def;
… やはり、基本を勉強した方が…
ちょっと調べてみたのですが
char a[256];
char b[256];
char c[256];
_snprintf(c, sizeof(c), a , b);
でやってみようと思うのですが、
何か問題点がありましたらご意見ください。
宜しくお願いします。
>何か問題点がありましたらご意見ください。
お試しになれば、おかしい事に直(す)ぐ気が付くでしょう
(_snprintf は名前から分るように sprintf の仲間ですから書式が必要でしょう)
それじゃダメじゃないかしら。
やってみましたか?
マニュアル読みましたか?
>_snprintf(c, sizeof(c), a , b);
いや、a と b を連結するんですよね、
かなり違うと思いますけど・・・
_snprintf( c, sizeof(c), %s%s, a, b);
でしょうか?
strcatで十分だと思われるのに、なんでわざわざ...
ようやく、うまくいきました。
みなさん有難うございました。
すいません。
チェック忘れました。