- ベストアンサー
ポインタの問題おしえて
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 こんなエラーが出ました。 いろいろ直しましたがどうして実行されません。 誰かわかる人がいたら間違いを見つけて教えてください お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
printfがprinfになってます(tが抜けてます) main関数の戻り値がintではなくfloatになってます
その他の回答 (3)
- MovingWalk
- ベストアンサー率43% (2233/5098)
>これを実行すると これをコンパイルすると ですよね。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 のタイプミスかと思います。 これは致命的なので、実行モジュールは作成されません。
お礼
ご指摘の通りその2箇所が間違っていました。ちなみに、 gcc のほうです。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>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で値を返してください。
お礼
どうもありがとうございました。参考になりました。
printfが、tが抜けてるprinfになっているのでは?
お礼
どうもありがとうがざいました。ミスを見つけていただきありがとうございます。
お礼
まったく指摘のとおりでした。どうもありがとうございました。