プロが教えるわが家の防犯対策術!

自分でプログラムを打ち、コンパイルしてみたんですけど
「c:10:警告:incompatible implicit declaration of built-in function 'printf'」とエラーが出てきました。
自分なりに10行目[ printf("%d :",b[i]); ]をいじってみたりは
したのですが、上手くいきません。
いったいドコがおかしいのでしょうか?
ご指導よろしくお願いします<(_ _)>

↓コレがそのプログラムです。
***************
int main(void){

int score[3][4];

int i,j,sum[3]={0};


score[0][0]=70; score[0][1]=80; score[0][2]=75; score[0][3]=60;

score[1][0]=75; score[1][1]=83; score[1][2]=70; score[1][3]=70;

score[2][0]=60; score[2][1]=76; score[2][2]=70; score[2][3]=55;


char b[]="ABC";

for(i=0; i<3; i++){

printf("%d :",b[i]);

for(j=0; j<4; j++){

printf("%3d",score[i][j]);

sum[i]+=score[i][j];}
printf(" : sum=%d, ave=%5.2f\n",sum[i],(float)sum[i]/4);

}

return 0;

}

A 回答 (4件)

printf("%d :",b[i]);


%dは整数を表示するときに用いるものです。
この場合は文字を出力したいのですから、%cとすべきでしょう。
この%d、%c、%fなどは、書式制御文字列と呼ばれ、変数の中身をどのような形式で表示するかをコントロールするものです。
「書式制御文字列」で検索すれば、詳しい使い方が見つかると思いますよ。
    • good
    • 0
この回答へのお礼

早速お返事ありがとうざいました<(_ _)>
確かにココはおかしいですよね、自分でもアホだなぁと思い早速
直してみたんですが、エラーが消えません。
何か他に問題があるのかな…?
また少し考えて見ます。

お礼日時:2005/10/23 17:26

C言語で関数を使うときには、同じファイルで、


関数をコールしている箇所より前(上)に関数の本体か、
関数のプロトタイプなければいけません。

同じファイルでも呼び出すところよりしたに関数がある場合は、
呼び出し箇所しょり前にプロタイプが必要です。

さて、エラーの意味ですが、関数printfの実体も、プロトタイプもないに
いきなり使われいます。コンパイラはどこかにあるものとして処理を
しました。という「警告 (worning)」です。

通常、他のファイル呼ばれる関数のプロトタイプは、ヘッダファイル
(.h)に聞きます。
別のファイルにある関数を呼び出す側では、そのヘッダファイルを
インクルードします(#inckude)

関数 printf() は stdio.h に記述されいるので、
No3.の方のように書くと、警告表示が消えます。
    • good
    • 0
この回答へのお礼

なるほど、教科書を読んでるみたいに
良くわかりました<(_ _)>

お礼日時:2005/11/07 14:55

2の方が、答えをそのまま書いていらっしゃいます。


下記の様に変更して下さい。

↓コレがそのプログラムです。
***************
#include <stdio.h>

int main(void){
(以下、省略)

参考URL:http://www.cmagazine.jp/src/kinjite/c/oldstyle.h …
    • good
    • 0
この回答へのお礼

お礼が遅れてすみませんでした<(_ _)>
なんとか問題も解決し、正常に動きました。

お礼日時:2005/11/07 14:51

> 「c:10:警告:incompatible implicit declaration of built-in function 'printf'」とエラーが出てきました。



この警告はgccですね。
直接の原因は<stdio.h>がインクルードされていないところにあります。
printfのような可変個引数を伴う関数を関数原型なしで呼び出した場合の動作は未定義です。

他には、既に回答が出ているように、書式指定と実引数が矛盾している問題があります。
    • good
    • 0
この回答へのお礼

はぃ、gccつかってやってます。
まだC言語を始めたばかり(しかも独学)なので
少し説明を理解するのに時間がかかりましたが
なんとなく意味はつかめました。
しかし、どうすればそれが改善するのか…。
No.1さんの指摘は明らかに私の間違いでしたが
エラーとは関係がなかったみたいです。
何がおかしいのかもう少し、考えて見ます。

お礼日時:2005/10/23 17:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!