文字の連結について

[戻る]
ADG 2004/04/27(火) 21:58:26
質問です。
buff[n]に格納されている文字とbuff[n+1]に格納されている文字を
連結したいのですが、できません。
strcpy関数を使おうとしていますが
strcpy(buff[n],buff[n+1])ではだめなのでしょうか。
お答えよろしくお願いします。

YuO [E-Mail] 2004/04/27(火) 22:34:21
buffの型は何ですか?

文字を連結する,ということは(少なくともCでは)不可能です。
文字列を連結するのであれば,strcatという標準関数が存在しますが……。

ADG 2004/04/27(火) 23:27:11
あ、すみません。
文字列を連結したいです。
buffの型はcharです。
お願いします。

tib 2004/04/28(水) 00:21:52
char buff[十分な領域が確保されていると仮定];

だったら、

> buff[n]に格納されている文字とbuff[n+1]に格納されている
> 文字を連結したいのですが、できません。
この問いに対する答は「既に連結されているから」。

私からADGさんへ質問。「文字と文字列の違いは解ってますよね?」



buff[n]とbuff[n+1]から成る新しい文字列を作りたいなら、

char buff2[十分なサイズを用意する];
sprintf( buff2, "%c%c", buff[n], buff[n+1] );

でいいでしょう。

PAI 2004/04/28(水) 02:01:17
buff が『char*の配列』なのではないかと予測。

アイススケーター 2004/04/28(水) 06:09:43
YuOさんのですでに答になっていると思いますが

からす 2004/04/28(水) 16:43:58
memmove( buff + n, buff + n + 1, num );

はずしてたらごめんなさい。

ぶんぼーぐ [E-Mail] 2004/04/28(水) 21:33:18
たぶん〜
char *buf[] ~ { "ABC","DEF","GHI","JKL" }; 
int   n;
char out_str[12]; 
  /* DEFとGHIを結合する */  
  sprintf(out_str,"%s%s",buf[1],buf[2]); 
かなあ

blackwind 2004/04/28(水) 23:53:32
> たぶん〜
> char *buf[] ~ { "ABC","DEF","GHI","JKL" }; 
> int   n;
> char out_str[12]; 
>  /* DEFとGHIを結合する */  
>  sprintf(out_str,"%s%s",buf[1],buf[2]); 
> かなあ

int n;
を使用してませんが。。。^^;

ADG 2004/04/30(金) 11:30:17
[[解決]]
tibさんので、できました。
ありがとうございました。

> 私からADGさんへ質問。「文字と文字列の違いは解ってますよね?」

文字は1文字で文字列は単語って解釈してるんですけど。。。
自信ないです。

他のかたもアドバイスありがとうございました。

επιστημη [E-Mail] [HomePage] 2004/04/30(金) 11:30:24
#include <iostream> // cout
#include <string>   // string
#include <cstring>  // strcpy

int main() {
  char* buf[2] = { "hello,", "world" };
  char result[32];
  std::strcpy(result, (std::string(buf[0]) + buf[1]).c_str());
  std::cout << '[' << result << ']' << std::endl;
  return 0;
}

とか。

tib 2004/04/30(金) 20:08:33
> > 私からADGさんへ質問。「文字と文字列の違いは解ってますよね?」
> 文字は1文字で文字列は単語って解釈してるんですけど。。。
例えば、「私」を意味する「I」という英単語があります。
これは1文字だから文字ですか? 辞書に載ってる英単語だから文字列ですか?

「'I'なら文字、"I"なら文字列」は正しいけど私が期待する答とは違うんだなぁ。

古いスレッドには追加発言できません。