参考書の自作関数の問題について聞きたいことがあります

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
asaly

参考書の自作関数の問題について聞きたいことがあります

#1

投稿記事 by asaly » 14年前

コード:

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

int func(int a,int b){
	int total = a+b;
	return total;
}

int main(int argc,char* argv[]){
	int d=0;
	int a = 0, b= 0;
	
	if(argc == 3){
		a = atoi(argv[1]);
		b = atoi(argv[2]);
		d = func(a,b);
		printf("%d+%d = %d\n",a,b,d);
	}
	return 0;
}
参考書をみていたら少しわからない場所が出てきたので質問をさせていただきます

上記のサンプルは「プログラム実行時に2つの整数値を引数でわたして その値を足した結果を
返す関数を作りなさい」という参考書の問題の答えなのですが
これを実行しても何も起こりませんしプログラムの意味もよくわかりません

どなたかわかる方は教えていただけないでしょうか
よろしくお願いいたします

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 参考書の自作関数の問題について聞きたいことがあります

#2

投稿記事 by みけCAT » 14年前

if(argc == 3)となっているので、コマンドラインから引数を二つ与えてやらないと何も起こりません。
コマンドプロンプトから「(exeファイル名) 123 456」などのように実行してください。
またはメモ帳に以下の内容を入力し、「run.bat」というファイル名で
これをコンパイルしたexeと同じフォルダに置き、ダブルクリックしてみてください。

コード:

(exeファイル名) 123 456
pause
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 参考書の自作関数の問題について聞きたいことがあります

#3

投稿記事 by softya(ソフト屋) » 14年前

コマンドラインでの引数についての説明は本に書かれていませんか?
これはコマンドラインで実行する場合に使うもので、次のように使います。
http://www.geocities.jp/ky_webid/c/045.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 参考書の自作関数の問題について聞きたいことがあります

#4

投稿記事 by みけCAT » 14年前

asaly さんが書きました:プログラムの意味もよくわかりません
ざっとこんなもんでしょう。

コード:

#include <stdio.h>					/*stdio.hを取り込む*/
#include <stdlib.h>					/*stdlib.hを取り込む*/
 
int func(int a,int b){				/*funcという関数を宣言する*/
    int total = a+b;				/*totalという変数はaとbの和*/
    return total;					/*totalを返す*/
}
 
int main(int argc,char* argv[]){	/*この関数を起動時に呼び出す*/
    int d=0;						/*dを宣言し、0に初期化する*/
    int a = 0, b= 0;				/*aとbを宣言し、それぞれ0に初期化する*/
    
    if(argc == 3){					/*コマンドライン引数が3個だったら*/
        a = atoi(argv[1]);			/*2個目の引数を整数にしたものをaに代入*/
        b = atoi(argv[2]);			/*3個目の引数を整数にしたものをbに代入*/
        d = func(a,b);				/*func関数の戻り値をdに代入*/
        printf("%d+%d = %d\n",a,b,d);/*足し算の結果を表示*/
    }
    return 0;						/*正常終了*/
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る