したがって、番号を変換するかどうかによって、 (./program -f)または(./program -c)の形式でコマンドラインからプログラムを実行したいとします。華氏から摂氏(-f)または摂氏から華氏(-c)までです。私が持っている問題は、私はエラー/警告を得ることです。私のアプローチは正しいと信じていますが、私はまだ自分のスキルを開発しています。コマンドラインを使用した方法の検索
warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
char **p = &argv[1];
warning: passing argument 1 of ‘strcmp’ from incompatible pointer type [-Wincompatible-pointer-types]
if(strcmp(p, c) == 0)
note: expected ‘const char *’ but argument is of type ‘char **’
extern int strcmp (const char *__s1, const char *__s2)
warning: implicit declaration of function ‘atof’ [-Wimplicit-function-declaration]
float returnc = c2f(atof(argv[2]));
warning: passing argument 1 of ‘strcmp’ from incompatible pointer type [-Wincompatible-pointer-types]
else if(strcmp(p, f) == 0)
note: expected ‘const char *’ but argument is of type ‘char **’
extern int strcmp (const char *__s1, const char *__s2)
私は私のコードを実行していると、それだけでそのは-f/-cを認識していないことを意味する「間違った」をデフォルトに行く:
#include <stdio.h>
#include <string.h>
float c2f(float c);
float f2c(float f);
float c2f(float c)
{
return (9 * c/5 +32);
}
float f2c(float f)
{
return ((f - 32) * 5/9);
}
int main(int argc, char const *argv[])
{
char c[3];
char f[3];
strcpy(c, "-c");
strcpy(f, "-f");
char **p = &argv[1];
if(strcmp(p, c) == 0)
{
float returnc = c2f(atof(argv[2]));
printf("%f\n", returnc);
}
else if(strcmp(p, f) == 0)
{
float returnf = f2c(atof(argv[2]));
printf("%f\n", returnf);
}
else
printf("Wrong\n");
return 0;
}
これらは私が得る警告しています。
エラー/警告メッセージが表示された場合は質問に含めてください! <はい、私は叫んでいます> – John3136
エラーメッセージと警告は何ですか?あなたの質問にそれらを編集してください。 – DeiDei
@ John3136提案していただきありがとうございます。私は警告を追加しました –