現在、C言語にて以下の機能を実装しようと試みています。
実現したい機能
・コマンドライン引数から入力した数値が正当かチェックを行う機能
機能の詳細
・チェック機能はmain関数とは別に関数を定義
・正当範囲の数字であれば0を返し、不正な値であれば1を返す。
動作
XX.exe 数字 のように実行した場合、入力情報をmain関数から引き取り、その数字がか正当な範囲(今回の場合は1~5の間)であれば上記の値を返す。
困っていること
上記の機能はif文やスイッチ文を羅列すれば実現できる機能かと思いますが、それではあまりにも冗長だと思いましたので↓のように配列とループ処理を使って実現しようと試みました。
しかしながら、1-5を入力した場合もそれ以外の数字を入力した場合のどちらも出力結果は
「check =1」となってしまいます。
どのように変更すれば機能を実現できますでしょうか。
また、現在のコードに加えてもっと効率的な方法があればご教授いただけますでしょうか。
#include<stdio.h> #include<string.h> int checkArg(int argc, char *argv[]); int main(int argc, char *argv[]) { int check = checkArg(argc, argv); printf("check = %d\n", check); return 0; } int checkArg(int argc, char *argv[]){ int i; int check = 1; char op[5] = {'1', '2', '3', '4', '5'}; for (i = 0; i < 5; i++) { if (strcmp(argv[1], &op[i]) == 0) { check = 0; break; } } return check; }
以上になります。
回答4件
あなたの回答
tips
プレビュー