プログラムは、次のようにこしらえました。
#include <stdio.h>
#include <string.h>
int main(void)
{
char s_in[128], s_out[128];
printf("Keyin a word>> ");
for(scanf("%128s",s_in);len(s_in)>0;)
{
strcpy( s_out,s_in);
strcat( s_out, s_in);
}
printf("%s\n", s_out);
return 0;
}
期待している実行結果はこれです。
Keyin a word>> I
Keyin a word>> am
Keyin a word>> a
Keyin a word>> rich
Keyin a word>> man
Keyin a word>> .
I am a rich man.
わからない1点目:strcpy() で s_out[ ] を初期化するやりかたが分かりません
わからない2点目:for文のscanf("%128s", s_in);以下に書くコードが思いつかない。
こんな感じですが、どなたか教えてください。
待ってます。
急ぎです。空白を含め、次々と文字を連結、.で終わらせる。
Re: 急ぎです。空白を含め、次々と文字を連結、.で終わらせる。
>.で終わらせる。
と書かれていますが、
ドット1文字だけの入力で終わらせるのか、
それとも、ドットを含む文字列を入力したら終わらせるのかどちらでしょうか?
と書かれていますが、
ドット1文字だけの入力で終わらせるのか、
それとも、ドットを含む文字列を入力したら終わらせるのかどちらでしょうか?
Re: 急ぎです。空白を含め、次々と文字を連結、.で終わらせる。
初期化の意味は分かりますか?I am You. さんが書きました:わからない1点目:strcpy() で s_out[ ] を初期化するやりかたが分かりません
この場合の初期化は、s_out[ ]の中身を””にすることです。
そしてstrcpy(a,b)は、aの文字列の内容を、bと等しくする関数です。
ちなみにlen(s_in)の判定があるため、s_in[ ]も初期化は必要です。
そもそもfor文の使い方がおかしいです。I am You. さんが書きました:わからない2点目:for文のscanf("%128s", s_in);以下に書くコードが思いつかない。
for(最初に1度だけ実行される処理;継続条件;1ループした後に実行される処理)
のように書きます。
for(scanf("%128s",s_in);len(s_in)>0;)
では、1度だけしか読み込みがされず、ずっと文字数が0以上のため無限ループします。
あと、lenという関数はありません。strlenの間違いでは?
そして、for文の中にはs_outにs_inを連結させる処理と、
ドットが入力されたらループを抜ける処理を書きます。
Re: 急ぎです。空白を含め、次々と文字を連結、.で終わらせる。
>わからない1点目:strcpy() で s_out[ ] を初期化するやりかたが分かりません
s_out[]を初期化する際、strcpy()を使う必然性がありません。
質問者さんが考えている「初期化」の中身を教えてください。
# 「急ぎです」とか「至急」なんて書くのは、かえって逆効果かもしれぬ。
# そんなに切羽詰まっているんなら放っておこうか、なんて考える人がいるかも。
s_out[]を初期化する際、strcpy()を使う必然性がありません。
質問者さんが考えている「初期化」の中身を教えてください。
# 「急ぎです」とか「至急」なんて書くのは、かえって逆効果かもしれぬ。
# そんなに切羽詰まっているんなら放っておこうか、なんて考える人がいるかも。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 急ぎです。空白を含め、次々と文字を連結、.で終わらせる。
確かにそうかもしれませんね。box さんが書きました:# 「急ぎです」とか「至急」なんて書くのは、かえって逆効果かもしれぬ。
昔からそういったタイトルを付ける人は解決しても感謝もせずに放置で去ってしまう人が多い気がするので、
回答する側としても「どうせ同じ類だろ~」って感じて回答するのをためらっちゃうんですよね。
まぁ、そんなことを感じるのは僕だけかもしれませんがw
とりあえず本題として、急ぎなら期日を書いてほしかったり。