• ベストアンサー

ポインタの問題おしえて

2つの数値を交換する問題です。 #include<stdio.h> void swap(float *na , float *nb){ float temp= *na; *na = *nb ; *nb = temp; } float main( ){ float a,b; puts("2つの実数の入力"); prinf("a="); scanf("% f ",&a); prinf("b="); scanf("% f ",&b); swap(&a , &b); printf("a= %5.5f b= %5.5f", a, b) ; } これを実行すると kadai3.c: In function `main': kadai3.c:11: warning: return type of `main' is not `int' /tmp/cc0BwKGT.o(.text+0x78):kadai3.c: undefined reference to `prinf' /tmp/cc0BwKGT.o(.text+0x9c):kadai3.c: undefined reference to `prinf' collect2: ld returned 1 exit status こんなエラーが出ました。 いろいろ直しましたがどうして実行されません。 誰かわかる人がいたら間違いを見つけて教えてください お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ryuta_mo
  • ベストアンサー率30% (109/354)
回答No.4

printfがprinfになってます(tが抜けてます) main関数の戻り値がintではなくfloatになってます

kuritoguri
質問者

お礼

まったく指摘のとおりでした。どうもありがとうございました。

その他の回答 (3)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.3

>これを実行すると これをコンパイルすると ですよね。Linuxのgccでしょうか? >kadai3.c:11: warning: return type of `main' is not `int' main()関数の戻り値はint型に決まっています。 だからint型じゃないよっていう警告です。警告(Warning)なのでこれが原因で 実行モジュールができないわけではありません。 >/tmp/cc0BwKGT.o(.text+0x78):kadai3.c: undefined reference to `prinf' >/tmp/cc0BwKGT.o(.text+0x9c):kadai3.c: undefined reference to `prinf' >collect2: ld returned 1 exit status 'prinf'のシンボルが解決しないというリンカ(ld)のエラーです。 prinf("a="); prinf("b="); の2箇所が該当します。 たぶん printf のタイプミスかと思います。 これは致命的なので、実行モジュールは作成されません。

kuritoguri
質問者

お礼

ご指摘の通りその2箇所が間違っていました。ちなみに、 gcc のほうです。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>kadai3.c: In function `main': >kadai3.c:11: warning: return type of `main' is not `int' main()の戻り値の型がfloatになっています。 intで定義してください。 >collect2: ld returned 1 exit status 戻り値の型が指定されているのに、returnで 戻り値を返していません。 returnで値を返してください。

kuritoguri
質問者

お礼

どうもありがとうございました。参考になりました。

noname#6581
noname#6581
回答No.1

printfが、tが抜けてるprinfになっているのでは?

kuritoguri
質問者

お礼

どうもありがとうがざいました。ミスを見つけていただきありがとうございます。

関連するQ&A