質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

1261閲覧

入力した文字列を逆順に表示するプログラムについて

wcpsts

総合スコア2

VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/11/08 08:41

分からないところ

何故、このようなコードで実現できたか分からなく、
関数の役割を詳しく教えて頂きたく質問致します。

該当のソースコード

int main(void) { char str[100]; int len = 0; int i; printf("何か入力してください"); scanf("%s", str); while (str[len] != '\0') { len++; } for (i = len; i >= 0; i--) { printf("%c", str[i]); } }

補足情報(FW/ツールのバージョンなど)

while以降のソースコードの意味が分からないです。
教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

そのコードはコンパイルエラーが発生せず、すなわち、あなたの解答は正しい。

投稿2022/11/08 11:21

atcoderyellow

総合スコア481

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

※ 求められている回答でないことは百も承知で
C++ ならもっと簡潔に書けるんですが...

C++

1#include <iostream> 2#include <string> 3 4int main() { 5 std::string str; 6 7 std::cout << "何か入力してください:" << std::flush; 8 std::cin >> str; 9 10 // 逆順に出力する 11 for ( auto iter = str.crbegin(); iter != str.crend(); ++iter ) { 12 std::cout << *iter; 13 } 14}

投稿2022/11/08 09:16

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

入力した文字列はchar型配列(一文字ずつ文字を格納してくれる箱の集まり)に格納されます。
格納された文字はabcdeの場合str["a","b","c","d","e","\0"]のような感じで順番に格納されてます。※わかりやすさ重視のため、正しい書き方ではないです

while文の中で入ってる文字列の長さを調べてます、(今回ならlen=5を取り出したいわけです)

配列は番号で中身を指定できるので後ろから順番にlenで指定して一文字ずつ呼び出しているということです

例:len=4なら
str[len]=str[4]="e"が表示される

正確にはfor文の前にlen--;が入りそうですけども。

投稿2022/11/08 08:48

編集2022/11/09 04:17
pig_vba

総合スコア808

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2022/11/09 03:57

些細な話ですが > while文の中で入ってる文字列の長さを調べてます という話を含めるのであれば, '\0' の存在を明示しておく必要があるように思えます. (逆に言えば,そこの一文を含めない形ならば要らない…かな)
pig_vba

2022/11/09 04:20

理解度的に配列に\0が自動的に入ることに対しての説明が追加で必要になりそうで、追加で%sの挙動まで解説したらパンクするかなぁと思って省略したんですが、一応明記はしといたほうがいいですかね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問