0
私は、FからCに変換するコンバーターを作成する必要があります。 プログラムには2つのパラメーターが必要です。最初に必要な変換の種類と2番目の数 例:./program -f 50.0 と出力:10.00°C = 50.00°F また、変換を行う2つの関数f2cとc2fを使用する必要があります。 これは正常に動作する私のコードですが、何らかの理由でifがアクセスされないため何もしません。ここ華氏から摂氏へC
#include <stdio.h>
#include <float.h>
#include <string.h>
float c2f (float c);
float f2c (float f);
int main(int argc, char *argv[])
{
char fArg = "-f";
char cArg = "-c";
float arg2;
sscanf(argv[1], "%f", &arg2);
if(strcmp(argv[0], &cArg) == 0)
{
float fValue = c2f(arg2);
printf("%f C = ", arg2);
printf("%f F\n", fValue);
}
else if(strcmp(argv[0], &fArg) == 0)
{
float cValue = f2c(arg2);
printf("%f C = ", cValue);
printf("%f F\n", arg2);
}
}
float c2f (float c)
{
float f;
f = 9*c/5 + 32;
return f;
}
float f2c (float f)
{
float c;
c = ((f-32) * 5)/9;
return c;
}
によって率を高めるには、無条件' else'句を持っていない、と何も起こりません。だから... 'else'を追加すると、おそらく最終的に出力が得られます。例えば'...} else {printf(" argsは一致しません\ n "); } 'argv [0]'は実行ファイルの名前です。引数は '[1]'で始まります... –
コマンドラインで渡す最初の引数は一般に 'argv [1]'です( 'argv [0]'は通常はプログラム名です)。 'strcmp(argv [0]、&cArg)'は 'strcmp(argv [1]、cArg)'でなければなりません。 – Dmitri
ええ、テストが失敗すると、別のテストでそれをチェックしました。 argv [0]をargv [1]に変更しても、それ以外のことは起こりません。また、セグメンテーションフォールトエラーがポップアップして削除された場合は、 – mateicoman