【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.22515

strcatを使わない文字列の連結
投稿者---まんまる(2005/08/08 18:10:54)


はじめまして、お世話になります。

課題の中でstrcatを使わずに入力された文字列を連結し、EOFになったら
入力された文字列を表示する という課題があり、やり方がわからないので質問をさせていただきます。

現在strcatを使ったコードでは

//1.CTRL+Dが押されるまで入力。それ+文字列の結合
printf("文字列を入力してください。終了=CTRL+D\n");

while( scanf("%s",str) != EOF ){
printf("文字列を入力してください。終了=CTRL+D\n");
strcat(buffer,str);
}

printf("入力された文字列を表示\n%s\n",buffer);

というのを作成しました。
どなたかご助言をよろしくお願いいたします・・・。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:strcatを使わない文字列の連結 22517 まきじ 2005/08/08 18:30:10
<子記事> Re:strcatを使わない文字列の連結 22518 Blue 2005/08/08 18:34:57


No.22517

Re:strcatを使わない文字列の連結
投稿者---まきじ(2005/08/08 18:30:10)


>課題の中でstrcatを使わずに入力された文字列を連結し、EOFになったら
>入力された文字列を表示する。

2 つの char 型配列を、繋げるのでしたら、
片方の文字列の \0 の位置から、もう片方の
1 文字目(配列の 0 番目)から順に格納していけば良い。
\0 もわすれずに格納。


この投稿にコメントする

削除パスワード

No.22518

Re:strcatを使わない文字列の連結
投稿者---Blue(2005/08/08 18:34:57)


> strcat(buffer,str);
文字列配列bufferの終端文字'\0'の位置から
文字列配列strを終端文字'\0'が現れるまで1文字ずつ複写していけばいいです。

つまり

buffer[ 0 ] : 'A'
buffer[ 1 ] : 'B'
buffer[ 2 ] : 'C'
buffer[ 3 ] : '\0'   <---- str[ 0 ] : 'a'
buffer[ 4 ] : 不定   <---- str[ 1 ] : 'b'
buffer[ 5 ] : 不定   <---- str[ 2 ] : 'c'
buffer[ 6 ] : 不定   <---- str[ 3 ] : '\0'
buffer[ 7 ] : 不定

ということです。



この投稿にコメントする

削除パスワード

No.22519

Re:strcatを使わない文字列の連結
投稿者---まんまる(2005/08/08 19:11:25)


>> strcat(buffer,str);
>文字列配列bufferの終端文字'\0'の位置から
>文字列配列strを終端文字'\0'が現れるまで1文字ずつ複写していけばいいです。
>
>つまり
>
>buffer[ 0 ] : 'A'
>buffer[ 1 ] : 'B'
>buffer[ 2 ] : 'C'
>buffer[ 3 ] : '\0' <---- str[ 0 ] : 'a'
>buffer[ 4 ] : 不定 <---- str[ 1 ] : 'b'
>buffer[ 5 ] : 不定 <---- str[ 2 ] : 'c'
>buffer[ 6 ] : 不定 <---- str[ 3 ] : '\0'
>buffer[ 7 ] : 不定
>
>ということです。

わかりやすい回答どうもありがとうございます。理解できましたのでやってみます。
今回string.hを使わないでやるっていう課題なのでstrlenも自作しなければならなさそうですね。。

ありがとうございました。


この投稿にコメントする

削除パスワード

No.22526

Re:strcatを使わない文字列の連結
投稿者---Blue(2005/08/09 01:45:59)


> 文字列配列bufferの終端文字'\0'の位置から
> 文字列配列strを終端文字'\0'が現れるまで1文字ずつ複写していけばいいです。
すごく間違ってました。
文字配列(char型配列)ですね。


> 今回string.hを使わないでやるっていう課題なのでstrlenも自作しなければならなさそうですね。。
ポインタを使うとやりやすいかも。

ex)

#include <stdio.h> /* bufferの最後に'a'を追加する */ int main( void ) { char buffer[ 32 ] = "ABCD"; char* p = buffer; printf( "追加前 : %s\n", buffer ); while ( *p ){ p++; } /* '\0'までポインタを進める */ *p++ = 'a'; *p = '\0'; printf( "追加後 : %s\n", buffer ); return 0; }



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧