-1

私は、摂氏温度を華氏温度に、またはその逆に変換することを仕事とする ac プログラムを書いていました。ユーザーにフォームに入力してもらいたい

 double, char

文字は、華氏から摂氏への変換の場合は「F」、摂氏から華氏への変換の場合は「C」のいずれかになります。私はそれを行うためにこのプログラムを書きました。プログラム

 #include <stdio.h>
 int main( )
 {
     char in[10];
     int i;
     printf("Welcome to the Tempurate Conversion Enter a ");
     scanf("%s %d", i, &in);
     printf(i);
     printf(in);
     return 0;
 }

このプログラムをコンパイルすると、次の警告が表示されます: The Warning

 CtoF.c: In function 'main':
 CtoF.c:8:4: warning: passing argument 1 of 'printf' makes pointer from integer w
 ithout a cast [enabled by default]
 c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/stdio.h:294:37: note:
 expected 'const char *' but argument is of type 'int'

私はプログラムに実行され、この入力を与えたとき: 入力

 3 C

そして、この出力を得ました:出力

 3@

警告メッセージの意味と、それを修正するためにできることを知りたいです。

4

3 に答える 3

3

と の書式指定子に問題がありscanfますprintf

 scanf("%s %d", i, &in);

する必要があります

 scanf("%d %s", &i, in);

 printf(i);
 printf(in);

する必要があります

printf("%d", i);
printf("%s", in);

そして補足:

ユーザーにフォームに入力してもらいたいdouble, char

このためには、に変更int iする 必要があります

 double i;

およびin%dへの変換指定子: %lfscanf

scanf("%lf %s", &i, in);
于 2013-08-03T22:53:16.633 に答える
0

あなたのprintf発言は間違っています。

printfのような char 配列が必要char in[10]です。ただし、整数を渡しています。int i.

警告printfは、ポインター パラメーターが必要であり、整数を渡すため、この整数がポインターにキャストされることを通知します。

したがって、整数の値が100の場合、100にあるメモリアドレスから読み取ろうとし、\0文字/値が見つかるまでメモリをダンプし続けます

于 2013-08-03T22:52:24.607 に答える
0

printf は次のように機能します。

printf の最初の引数は、予想される引数の数を示します

printf( "%d", n ); 

1 つの引数が必要であることを示します (int ポインター)

printf( "%d %d", n, m );

2 つの引数があることを示しているため、構文が間違っています

于 2013-08-03T23:20:36.473 に答える