atoi(s) 関数の使用に問題があります。コマンド ライン引数を整数に変換しようとしていますが、atoi 関数から受け取る整数の動作がおかしいです。変換を保持している変数を確認したところ、正しい整数が保持されていますが、プログラムを実行すると、正常に機能しません。プログラムは 3 つの引数を受け入れます。プログラム自体、関数番号 (1-3)、および任意の整数。たとえば、コマンド ライン命令は lab4p2 3 10 のようになります。
機能:
#include <stdio.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
// Functions
// Sumation function adds all integers from 1 to the value.
int sumation(int x)
{
int counter = 1;
int value;
while (counter < (x+1))
{
value += counter;
counter++;
}
return value;
}
// Negation function returns the negation of the given value.
int negation(int x)
{
int negator, value;
negator = (x*2);
value = (x - negator);
return value;
}
// Square function returns the square of the input value.
int square(int x)
{
int value;
value = (x*x);
return value;
}
//---------------------------------------------------------------------------
主要:
main(int argc, char *argv[])
{
int inputval, functionval, value;
double doubleval;
functionval = atoi(argv[1]);
inputval = atoi(argv[2]);
doubleval = atof(argv[2]);
printf("%i", functionval);
printf("%i", inputval);
if(argc != 3)
{
printf("%s", "Invalid amount of arguments! 3 expected. \n");
}
else if ((functionval < 1)||(functionval > 3))
{
printf("%s", "Invalid function value. Expected values: 1-3 \n");
}
else if (inputval != doubleval)
{
printf("%s", "Invalid value! Integer expected. \n");
}
else if (functionval = 1)
{
value = sumation(inputval);
printf("%s", "The sum from 1 to the input value = ");
printf("%d", value);
}
else if (functionval = 2)
{
value = negation(inputval);
printf("%s", "%d", "The negation of the input value = ", value);
}
else if (functionval = 3)
{
value = square(inputval);
printf("%s", "%d", "The square of the input value = ", value);
}
else
{
printf("%s", "Something is wrong!");
}
}
すべてのエラー チェックは正常に機能しますが、関数 2 と 3 は (入力にもかかわらず) アクセスされず、関数 1 は間違った回答を表示します。問題が何であるかを知っている人はいますか?
ありがとう、マット