ポインタ+ポインタ – プログラミング – Home

通知
すべてクリア

[解決済] ポインタ+ポインタ

固定ページ 1 / 2

RIE
 RIE
(@RIE)
ゲスト
結合: 22年前
投稿: 12
Topic starter  

こんにちは以下のようにポインタ同士を連結して
文字列を作りたいのですが、コンパイルエラーが出てしまいます。
やり方を教えて頂きたいのですが、どなたか宜しくお願いします。

char *a;
char *b;

a = abc;
b = def;

a = a+b;
printf(a = %s\n,a);


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> ポインタ同士を連結して文字列を作りたいのですが

できません。


返信引用
anony
 anony
(@anony)
ゲスト
結合: 22年前
投稿: 2
 

下で、string+ポインタの質問もされていましたが、STL等に手を出す以前に、標準関数や基本
的な
部分を理解されていますか? 基本が出来ていないと必ず行き詰まります。

そもそも文字列を連結した際に、元の文字列の長さの合計分(+1)の領域が必要になる(ので、
自分で
用意したりする必要がある)ということを理解していますか?
基本を知らずにstd::string等を使っているなら、上記のようなメモリに関する部分はライブラ
リの中に
隠蔽されてしまっているのでわからないままになってしまいますよ。
#もし、そんなこたぁわかってるよ、という場合は無視して下さい。


返信引用
RIE
 RIE
(@RIE)
ゲスト
結合: 22年前
投稿: 12
Topic starter  

では、
char a[256];
char b[256];

a = abc;
b = def;

char配列同士を連結させるにはどうすれば良いのでしょうか?
どなたかヒントだけでも宜しくお願いします。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>char配列同士を連結させるにはどうすれば良いのでしょうか?
C でなんとかするのなら、排列同士を連結する事は面倒なので、中身を連結する場合は

char a[256];
char b[256];
char c[512];

strcpy(a, abc);
strcpy(b, def);

strcpy(c, a);
strcat(c, b);

でしょう


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

「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 );


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

あー、strcat()ってあったねぇ。sprintf()ばっかりつかってるもんだから忘れてた。


返信引用
anony
 anony
(@anony)
ゲスト
結合: 22年前
投稿: 2
 

>char a[256];
>char b[256];
>
>a = abc;
>b = def;

… やはり、基本を勉強した方が…


返信引用
RIE
 RIE
(@RIE)
ゲスト
結合: 22年前
投稿: 12
Topic starter  

ちょっと調べてみたのですが

char a[256];
char b[256];
char c[256];

_snprintf(c, sizeof(c), a , b);

でやってみようと思うのですが、
何か問題点がありましたらご意見ください。

宜しくお願いします。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>何か問題点がありましたらご意見ください。

お試しになれば、おかしい事に直(す)ぐ気が付くでしょう
(_snprintf は名前から分るように sprintf の仲間ですから書式が必要でしょう)


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

それじゃダメじゃないかしら。
やってみましたか?
マニュアル読みましたか?


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

>_snprintf(c, sizeof(c), a , b);

いや、a と b を連結するんですよね、
かなり違うと思いますけど・・・

_snprintf( c, sizeof(c), %s%s, a, b);

でしょうか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

strcatで十分だと思われるのに、なんでわざわざ...


返信引用
RIE
 RIE
(@RIE)
ゲスト
結合: 22年前
投稿: 12
Topic starter  

ようやく、うまくいきました。
みなさん有難うございました。


返信引用
RIE
 RIE
(@RIE)
ゲスト
結合: 22年前
投稿: 12
Topic starter  

すいません。
チェック忘れました。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました