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

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

ただいまの
回答率

91.36%

  • C++

    2427questions

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

  • Visual Studio 2013

    279questions

    Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

コマンドプロントで.exeファイル実行と同時に数値を入力し、その値が表示されるプログラムを作成したい。

解決済

回答 4

投稿 2017/11/21 17:12 ・編集 2017/11/21 17:13

  • 評価
  • クリップ 0
  • VIEW 168

harrier

score 6

現在C++のプログラミングをVisualStudioを使って行っています
.exeファイルを作成した上で、コマンドプロント上にて
”.exeファイル 数値” 
と入力し数値がコマンドプロント上へと表示されるプログラムを作成したいと考えています

.exeファイルの出力とscanfを使い表示することについては実装することが出来るのですが、.exeファイル実行と同時に数値を与え、その値がコマンド上に表示されるプログラムを作成していきたく試行錯誤をしています。
どなたか使用関数や方法をご存知の方がいらっしゃればご教授の程よろしくおねがいします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+3

main関数のコマンドライン引数というもので受け取ることができます。
詳しくはマニュアル参照。
https://msdn.microsoft.com/ja-jp/library/6wd819wh.aspx
https://msdn.microsoft.com/ja-jp/library/17w5ykft.aspx

簡単に説明すると、main関数の第二引数の要素[1]に値が入ってきます。

int main( int argc, char *argv[], char *envp[] )
{
    cout << argv[1];
}

投稿 2017/11/21 17:19

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/21 17:59

    コメントありがとうございます
    記載して下さったコードで.exeファイルを構築し,
    ファイル名.exe 数値
    と入力を行った結果,7ケタの数字がランダムに表示され、入力した数値が帰ってこない状態になってしまいました

    キャンセル

checkベストアンサー

+1

コマンドライン引数で受け取ればいいです。

main関数の引数の int argc, int char* argv[] っていうやつで。

argc が 実行ファイル名( 場合によっては絶対パスだったりする。 ) と 引数の 和になっていまして、

(以下はコードではなく、イメージ。 )

argv[0] = (実行ファイルの)ファイルパス
argv[1] = 引数1
argv[2] = 引数2
...

となっています。

で、ttyp03さんの回答にあるコード、なんか不思議だなぁと思っていたら、

第三引数がある!

なんだろ?と思って「int main( int argc, char *argv[], char *envp[] )」で検索してみると、

envp - main関数3つ目の引数

がヒットした。

これによると、環境変数が格納されるらしいです。

ですが、今回は使わないので

int main( int argc, char *argv[] )

でいいと思う。

また、今回はただ単に表示するだけのようなので問題ないかもしれませんが、
引き受けたコマンドライン引数はすべて文字列になっています。

なので、どうしても計算するとかで数値が欲しいなら atoi関数 ( C++なら std::atoi関数? ) 等のような変換用の関数で変換して計算する...
っていう感じになるかと。( もしかすると C++11以降とかみたいに条件があるかもしれませんが。 )

あるいは、ほかの方法として、

Windows APIとかのようなAPIでコマンドライン引数を取得するとか。
ただし、少なくとも Windows APIの場合は 一列の文字列になっていたり、wchar_t みたいな感じで若干扱いにくかったりするし、
Windows APIなら Windows上でしか使えない。

投稿 2017/11/25 14:51

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/27 14:48

    こちらで無事解決することが出来ました!
    ありがとうございました!

    キャンセル

+1

#include <iostream>

int main( int argc, char *argv[]) {
  for ( int i = 0; i < argc; ++i ) {
    std::cout << i << ':' << argv[i] << std::endl;
  }
}

コレをコンパイル/リンクし、コマンドラインから
コレ.exe 123 456 789
してみよう。最初の引数 123 は argv[いくつ] に対応するかな?

投稿 2017/11/22 15:08

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

exeファイルの中で引数を受けつけるように設定して、
exeファイルの中で引数の値を出力すればできそうですが、やりたいこととは違いますか?

投稿 2017/11/21 17:15

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/21 18:00

    コメントありがとうございます
    仰る通りのことをやりたいのですが、引数を受け付ける設定が調べてもよくわからず迷っておりますので、やり方をご存知でしたらお教えいただきたいです

    キャンセル

  • 2017/11/22 13:31

    ttypさんのやり方の説明で出ている引数のとり方は分かったのでしたら、
    System.out.print(argv[1]);で出力できそうですができませんか>?

    キャンセル

  • 2017/11/22 14:56

    それJavaですね。

    キャンセル

  • 2017/11/27 14:01

    cout << "出力したい文字列";

    キャンセル

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

ただいまの回答率

91.36%

関連した質問

同じタグがついた質問を見る

  • C++

    2427questions

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

  • Visual Studio 2013

    279questions

    Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

  • トップ
  • C++に関する質問
  • コマンドプロントで.exeファイル実行と同時に数値を入力し、その値が表示されるプログラムを作成したい。