No.17499![]() |
空白ごとに逆に表示したい。 投稿者---tomohisa(2004/10/26 15:03:04) |
||
gets()で読み込んだ文字列を空白ごとに逆から表示したいのですが、プログラムの書き方が分からなくて困っています。 例えば、使用者が his name is tomohisa と入力した場合、 tomohisa is name hisと出したいのです。 ヒントだけでもいいのでお願いします。 |
No.17500![]() |
Re:空白ごとに逆に表示したい。 投稿者---NykR(2004/10/26 15:16:25) |
||
>ヒントだけでもいいのでお願いします。 sscanf と 再帰 |
No.17501![]() |
Re:空白ごとに逆に表示したい。 投稿者---Hermit(2004/10/26 15:22:02) |
||
簡単に考えると、 strtok で文字列を切り分け文字で切り分けて、最後から出力し、 間に切り分け文字をかませる! でいいのではないかと思いますが。 切り分け文字(スペース)が、二つ以上続くときは考慮してません。 |
No.17502![]() |
Re:空白ごとに逆に表示したい。 投稿者---もぐりん(2004/10/26 15:23:57) |
||
1)getsで取得した文字列をstrtokを使用して単語に切り分ける。 2)切り分けた単語を逆から順に並べ替えて出力する。 |
No.17503![]() |
Re:空白ごとに逆に表示したい。 投稿者---tomohisa(2004/10/26 16:44:47) |
||
素早い解答ありがとうございます。 >1)getsで取得した文字列をstrtokを使用して単語に切り分ける。 に関しては、 #define SIZE 256 int main() { char str[SIZE]; char *tokenPtr; gets( str ); strcpy(strc, str); tokenPtr = strtok( str, " " ); return 0; } でできてると思うのですが、 >2)切り分けた単語を逆から順に並べ替えて出力する。 が、よくわかりません。 もう少し詳しく教えていただけませんか? |
No.17504![]() |
Re:空白ごとに逆に表示したい。 投稿者---επιστημη(2004/10/26 16:48:49) |
||
> > >>1)getsで取得した文字列をstrtokを使用して単語に切り分ける。 >に関しては、 >... >でできてると思うのですが、 では、ひとつづつ表示してみてください。 |
No.17506![]() |
Re:空白ごとに逆に表示したい。 投稿者---tomohisa(2004/10/26 16:52:43) |
||
>> >> >>>1)getsで取得した文字列をstrtokを使用して単語に切り分ける。 >>に関しては、 >>... >>でできてると思うのですが、 > >では、ひとつづつ表示してみてください。 while ( tokenPtr != NULL ) { printf( "%s\n", tokenPtr ); tokenPtr = strtok( NULL, " " ); } ですよね? |
No.17509![]() |
Re:空白ごとに逆に表示したい。 投稿者---かずま(2004/10/26 17:00:33) |
||
なぜ【掲示板ご利用上の注意】にしたがってプログラムを投稿しないのですか? と小言を言うだけではなんなので、strtok を使わないプログラムを示します。 #include <stdio.h> #define P(op) if (i < 0) break; \ for (j = i; --i >= 0 && buf[i] op ' '; ) ; \ printf("%.*s", j - i, buf + i + 1) int main(void) { char buf[256]; int i, j; if (gets(buf)) { for (i = 0; buf[i]; i++) ; for (;;) { P(!=); P(==); } puts(""); } return 0; } |
No.17510![]() |
Re:空白ごとに逆に表示したい。 投稿者---επιστημη(2004/10/26 17:01:48) |
||
>while ( tokenPtr != NULL ) { > printf( "%s\n", tokenPtr ); > tokenPtr = strtok( NULL, " " ); > } >ですよね? そのtokenPtrを配列に代入します。 その配列の各要素をオシリから表示すればいい。 |