掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.24662

文字列比較
投稿者---gakusei(2005/12/10 23:28:19)


#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
        int i, k;
        double j;
        if(argc > 3)
                printf("input Error\n");
        else{
                        switch(*argv[1]){
                                case 'k':
                                        j = atof(argv[2]) / 1.61;
                                        printf("%lf[km] = %lf[mi]", atof(argv[2\
]), j);
                                        break;
                                case 'm':
                                        j = atof(argv[2]) / 0.91;
                                        printf("%lf[m] = %lf[yd]", atof(argv[2]\
), j);


オプションを-mのようにつけてコマンドライン上で単位変換をさせたいんですが、'○'の部分に'-m'といれるとエラーが出ています。main()第二引数で-mを与えてswitchで分岐するにはどうしたらいいのでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:文字列比較 24663 まきじ 2005/12/10 23:39:05
<子記事> Re:文字列比較 24664 Hermit 2005/12/10 23:39:57


No.24663

Re:文字列比較
投稿者---まきじ(2005/12/10 23:39:05)


>switch(*argv[1]){

*argv[1] は char 型でなはなく、引数の文字列へのポインタです。

>main()第二引数で-mを与えてswitchで分岐するにはどうしたらいいのでしょうか?

文字列 "-m" として strcmp() などで比較すればどうでしょうか?
どうしても switch 文が良いなら '-' は別にして分岐。


この投稿にコメントする

削除パスワード

No.24665

Re:文字列比較
投稿者---まきじ(2005/12/10 23:44:41)


>*argv[1] は char 型でなはなく、引数の文字列へのポインタです。

間違いました。
Hermit さんが仰ってるように、*argv[1] は '-' です。
ので char 型。


この投稿にコメントする

削除パスワード

No.24664

Re:文字列比較
投稿者---Hermit(2005/12/10 23:39:57)


switch(*argv[1]){
>オプションを-mのようにつけてコマンドライン上で単位変換をさせたいんですが、'○'の部分に'-m'といれるとエラーが出ています。main()第二引数で-mを与えてswitchで分岐するにはどうしたらいいのでしょうか?

'○'の部分がよくわかりませんが、
*argv[1] は、'-' でないでしょうか?
'm' なら、argv[1][1] でないかな


この投稿にコメントする

削除パスワード

No.24669

文字列比較
投稿者---gakusei(2005/12/10 23:55:56)


ちょっとバカなもんでわかりません。
どこをどう訂正したらいいのでしょうか?


この投稿にコメントする

削除パスワード

No.24672

Re:文字列比較
投稿者---Hermit(2005/12/11 00:06:48)


switch(*argv[1]){
を、
switch(argv[1][1]){
に変えたほうがいいと思われます。

元のソースが完全でないので、エラーがどのように起こるのか不明ですが、
とりあえず、
prog.exe -m 3.14
のように起動するのであれば・・・です。


この投稿にコメントする

削除パスワード

No.24687

文字列比較
投稿者---gakusei(2005/12/11 00:58:12)


解決しましたありがとうございます。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧