【掲示板ご利用上の注意】

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

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


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

No.23424

コマンドライン入力(argc argv)の使用法について
投稿者---トリンプ(2005/09/30 12:05:43)


コマンドラインから整数を指定して、if文でコマンドラインから
入力した整数が真ならそのコマンドを画面に出力するという
プログラム(if.cとする。)をargc,argvを使って作ったのですが
コンパイルで警告されてしまいます。どうすればコンパイルが
通るようになるのでしょうか?
どなたか教えて下さい。

if.cのソース

# include<stdio.h>
main(int argc,int *argv[])
{
int i,s=0;

for(i=1;i<10;i++)
 {i=s+i;
  if(i==argv[1])
  printf("%d\n",i);
 }
}





コマンドラインで
$ gcc if.c -o if
とすると、下記のコメントが画面に出力されます。

if.c: 関数 `main' 内:
if.c:8: 警告: ポインタと整数との比較を行なっています


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:コマンドライン入力(argc argv)の使用法について 23425 nop 2005/09/30 12:31:14


No.23425

Re:コマンドライン入力(argc argv)の使用法について
投稿者---nop(2005/09/30 12:31:14)


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

msin()の引数の型は、それぞれ

  main( int,char ** );

です。
つまり、コマンドライン引数は文字列で渡されます。


この投稿にコメントする

削除パスワード

No.23426

コマンドライン入力(argc argv)の使用法について
投稿者---トリンプ(2005/09/30 12:47:10)


御返信ありがとうございます!!

>> main(int argc,int *argv[])
>
>msin()の引数の型は、それぞれ
>
>  main( int,char ** );
>
>です。
>つまり、コマンドライン引数は文字列で渡されます。

main(int argc,int *argv[])を
main(int argc,char *argv[])と書くということですよね。
これも試したのですが、コンパイルできませんでした。

おそらく、if文で

if(i==argv[1])

とかいているのが問題(iはintで宣言しているのに、argv[]はcharで
宣言するとまずいのでは!!)だと思うのですが、どうすればよいのか
わかりませんでした。
どうにかコマンドラインの引数で整数を指定して、それをif文でif(i==argv[1])
のように使いたいです!!


この投稿にコメントする

削除パスワード

No.23427

Re:コマンドライン入力(argc argv)の使用法について
投稿者---Blue(2005/09/30 13:01:31)


まずは文字列を整数値に変換してから(またはその逆)をしてから比較してください。

文字列->数値変換例
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    char s[] = "1234";
    int  n = atoi( s );
    if ( n > 0 )
    {
        puts( "0より大きい" );
    }
    else
    {
        puts( "0より小さい" );
    }
    return 0;
}

他にも、strtol,sscanf,自力で変換する方法があります。



この投稿にコメントする

削除パスワード

No.23430

コマンドライン入力(argc argv)の使用法について
投稿者---トリンプ(2005/09/30 13:50:44)


ありがとうございました!!
解決いたしました!!
またよろしくお願い致します!!


この投稿にコメントする

削除パスワード

No.23428

Re:コマンドライン入力(argc argv)の使用法について
投稿者---まきじ(2005/09/30 13:02:25)


> if(i==argv[1])

「argv は char 型 で i は int 型で型が違う変数を比較してる」
と警告です。
argv[1] を int 型にするには、atoi() を使えば良いです。


この投稿にコメントする

削除パスワード

No.23431

コマンドライン入力(argc argv)の使用法について
投稿者---トリンプ(2005/09/30 13:51:22)


ありがとうございました!!
またよろしくお願い致します!!


この投稿にコメントする

削除パスワード

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