• ベストアンサー

コマンドライン引数

コマンドラインから文字列として取得して、 ほかの変数に文字列として入れたいのですが、どうしたらいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.2

mainの宣言方法は#1さんで回答が出ているのでそれ以降の処理について書きます。 argv で引数を受け取ったあとは strcpy 関数などで別の変数にコピーできます。 char work[128]; strcpy( work, argv[1] ); strcpy の2番目の引数でコピーしたい引数の位置を指定してください。 0番目は自分自身のファイル名になっているので1番目からということになります。 またコピーする前に argc で引数の数をチェックして、引数が入力されていればコピーする等の処理も必要です。 そして当然ながらコピー先の領域も十分確保し、コピーする前に引数の長さを strlen 等でチェックする必要もありますね。 ただ参照するだけということであれば char 型のポインタ変数を用意してアドレスだけコピーしたほうがいいかもしれませんね。 char *p; p = argv[1];

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

main(int argc, char *argv[]) と記述しておけばよいです。 int argc: 引数の総個数(プログラム名も含む) char *argv[]: 引数の文字列を指すポインタの配列を表します。 参考URLにサンプルがあります。

参考URL:
http://www9.plala.or.jp/sgwr-t/c/sec11-4.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • コマンドライン引数

    コマンドライン引数の文字列(__argv[●】)に "\n"を追加したいのですがポインタにポインタを加えようとしました っとでてできません。どうすればいいのでしょうか?

  • コマンドを実行してコマンドライン文字列を読み込む

    C言語(他の言語でも)で、コマンドを実行して結果の文字列を取得できるような関数はないでしょうか? コマンドを実行したプログラム内の変数に文字列として保持して、処理したいと考えています。 Windowsです。 よろしくお願い致します。

  • コマンドラインがわかりません!!

    (質問) (1)コマンドラインというのがわかりません。 (2)下の説明のところが全部わかりません。 よろしくおねがいします!! -------------------------------------------------- (説明) ファイルを処理するとき、ファイル名指定はコマンドラインから行うのが便利です。Javaではコマンドライン引数はmain( )メソッドの引数として次のように用意されています。 public static void main (String args[ ]) { ・・・・・ } このargs引数を使うと、コマンドラインから入力されたパラメーターを次のように取得できます。 最初のパラメーター文字列は0です。 args.length args[0] args[1] args [2]  ・  ・  ・

    • ベストアンサー
    • Java
  • コマンドライン引数のチェック

    args[]ってString型の配列変数ですよね? たとえば、 コマンドライン引数で数字を受け取って演算するために Stringからint等の数値に変換するとします。 Integer.ParseInt()を使うと、もし数字ではない引数 だったときに例外処理が発生します。 事前に文字か数字がチェックする方法はあるのでしょうか? それとも例外処理で対応するしかないのでしょうか?

    • ベストアンサー
    • Java
  • コマンドライン引数

    1~10の整数のコマンドライン引数を受け取り、それと等しい英語及び受け取った引数の数を表示するプログラムを作りたいのですがわかりません。 引数がない場合、1~10以外の整数の場合はエラーメッセージを表示させてプログラムを終了するようにしたいです。 出力する英語の文字列は String 配列に格納するようにします。 実行結果です。 % java englishNum 2 3 1 Two Three One length : 3 % java EnglishNum No Parameter! % java EnglishNum 30 Only 1-10!

    • ベストアンサー
    • Java
  • コマンドラインの引数が正しくありません。

    Outlook Expressでメール送ろうとしたら戻ってきます。 それで、色々調べましたが、解らず、相手からきたメールの中の相手のメールの 所を、押したら、(コマンド ラインの引数が正しくありません。使用しているスイッチを確認してください)とでるのは・・・・なぜですか? メールの文字が間違っているのかなー? 教えてください。なお、PCは、MEです。

  • コマンドライン引数 java

    学校で、2進数表記された文字列number1、number2…numberNを数値に変換し、合計を算出し、2進数表記の文字列に変換した結果を出力するプログラムを組む課題が出ました。 java Lesson06 number1 number2 … numberN の形式で受け取ったコマンドライン引数を元に、処理を行います。 ※number1からnumberNは、全て0か1のみで構成されている文字列 * 文字列の加算 * System.outまたはSystem.errのprint系メソッドで、Stringの値を受け取るもの以外 * Integerなどのラッパークラス * DecimalFormatなどの書式変換クラス 上記の機能は使ってはいけません。 ---- class Lesson{  public static void main(String args[]){   int sum;   for(int i = 1; i < args.length; i ++) {    int len = strlen(args[i]);//※    for(int j = 0; j < len; j ++) {     if(args[i][len - j - 1] == "1") {//※      sum = pow(2, j) + sum;//※     }    }   }  } } ---- とりあえず、与えられた二進数を計算する部分まで作ってみたのですが、※の部分でエラーが出てしまいます。 コマンドライン引数もよく分からなくて困っているので、教えていただければ助かります。 以上よろしくお願いいたします。

    • ベストアンサー
    • Java
  • PocketPcでコマンドラインパラメータを取得したい。

    PocketPcでコマンドラインパラメータを取得したい。 現在、eMbedded Visual C++ 3.0を使い、PocketPc用のアプリケーションを作っています。 MFCは使わずにAPIオンリーです。開発PCはW2Kです。 ターゲットはCASSIOPEIA E800 ちょっとマイナー?ですが、産業用PDAです。 コマンドラインパラメータの値により動作が異なるようなアプリケーションを 作りたいのですが、コマンドラインパラメータの取得方法を教えてください。 自分で書いたコードでは、コマンドラインパラメータが1文字しか取得できません。 文字列変数と、ポインタ変数の2種類の方法で試してみたのですが、 どちらも結果は同じでした。 因みに、コマンドライン入力は、フリーのGS_Finderとゆうソフトで実現したいます。 (PocketPcではOS単体で、コマンドライン入力が出来ませんので) また、E800上でコマンドラインパラメータを受け取って動作するアプリケーションも 確認しています。 よろしくお願いします。 /****************** ソースはこんな感じです。 ******************/ char GlpCmdLine[20]; LPTSTR GloballpCmdLine; /*****Defines the entry point for the application.*************/ int WINAPI WinMain(  ・・・) { MSG msg; HACCEL hAccelTable; memset(GlpCmdLine,0x00,20); //初期化 strncpy (GlpCmdLine,(char*)lpCmdLine,20); CmdLineSave( GlpCmdLine ); // ファイルに保存(自作関数) GloballpCmdLine = GetCommandLine(); CmdLineSave( (char*)GloballpCmdLine ); // ファイルに保存(自作関数) ・ ・ ・ return msg.wParam; }

  • コマンドプロンプトにおけるコマンドライン引数の展開

    こんにちは。 コマンドプロンプトにおける、コマンドライン引数の展開のされ方について、質問させて下さい。 具体的に言うと、二重引用符で囲まれたコマンドライン引数が、 どのようにして各コマンドに渡されるのかを詳しく知りたいと思っています。 まずコマンドプロンプトが、コマンドラインの特殊文字を展開し、 それらが各コマンドに渡される事は知っています。 特に、2つの二重引用符で囲まれた文字列に含まれる特殊文字は普通の文字として扱われる事、 二重引用符は「\」によってエスケープできる事は知っています。 これらを理解した上で、以下のような事を試しました。 まず、以下のような、1.cというCプログラムを作成し、ビルドしました。 ____________________ #include <stdio.h> int main(int argc,char *argv[]) { int i; for(i=1; i<=9; i++) if(argv[i]) printf("argv[%d]=「%s」\n", i, argv[i]); return 0; } ____________________ 次に以下のようなバッチスクリプトを作成しました。 ____________________ @echo off echo %%~1:「%~1」 echo %%~2:「%~2」 echo %%~3:「%~3」 ____________________ その後、以下のようにして同じコマンドライン引数を、これらのプログラムに渡すと、 以下のような結果になりました。 ____________________ C:\Users\kei >1.exe "\"ab c\"" de argv[1]=「"ab c"」 argv[2]=「de」 C:\Users\kei >1.bat "\"ab c\"" de %~1:「\"ab」 %~2:「c\""」 %~3:「de」 ____________________ なぜ両者の出力結果に、違いが出るのかが分からず困っています。 コマンドプロンプロの仕様だと、1.exeの出力は予想通りだったのですが、 1.batの出力では、コマンドライン引数がスペースで区切られていると、 それらを二重引用符で囲んでも、1つの引数としてみなしてくれませんでした。 これだけでは不十分だと思い、以下のように、 Windowsコマンドではない、ダウンロードしてきたlessと Windowsコマンドであるtypeで、同じ事を試しました。 ____________________ C:\Users\kei >less "\"ab c\"" fa ab c: No such file or directory fa: No such file or directory C:\Users\kei >type "\"ab c\"" fa 指定されたファイルが見つかりません。 処理中にエラーが発生しました: \ab パラメータが間違っています。 ____________________ この結果をみると、lessでは1.exeと同じようにコマンドラインが解釈され、 moreでは1.batと同じようにコマンドラインが解釈されているようです。 こういった事実は 「まずコマンドプロンプトが、コマンドラインの特殊文字を展開し、 それらが各コマンドに渡される」 というコマンドプロンプトの仕様と矛盾しているので、頭が混乱しています。 こういった問題について、何か御存じの方がいらっしゃれば、情報提供をお願い致します。 長くなりましたが、よろしくお願い致します。

  • コマンドライン引数ってなんですか?難しいのでわかり

    コマンドライン引数ってなんですか? わかりやすく教えてください。お願いします。

    • ベストアンサー
    • Java