重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

自作関数が入ったcファイルをインクルードで呼び出し、実行しようと思っています。しかし自作関数を呼び出す前に、scanfやprintfを入れると、関数が上手く機能しません。入れなければ、ちゃんと機能します。
原因が分かりません。お願いします。

A 回答 (4件)

mfig() で b の値がちゃんと初期化されていないのが原因で、scanf() 等のせいではないですね。



ちなみに私だったら、

int mfig(int a) [
int s = 0;
while(a>0){
a /= 10;
s++;
}
return s;
}

とします。

でもやっぱり基本は分割コンパイルでしょう。それと #include <stdio.h> は main 関数のファイルにいれるべきでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。できました。
mfig関数参考になりました。すっきりしてますね。

お礼日時:2006/09/04 13:43

この場合に使うのは「インクルード」ではなく「分割コンパイル」ではないでしょうか。



「分割コンパイル」でGoogle検索して調べてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。できました。

お礼日時:2006/09/04 13:42

ソース見てないので何ともいえませんが用は


標準出力,入力の関数を使用するとおかしくなるってことなので

#include <stdio.h>

が抜けてるのでは?
    • good
    • 0
この回答へのお礼

ありがとうございます。
下記のNO.1さんのお礼に載せたmyfuc.cに#include <stdio.h>を入れましたが、結果は同じでした。

お礼日時:2006/09/04 12:55

質問がアバウトすぎます。


せめて問題となるソースを載せてほしいところですね。
    • good
    • 0
この回答へのお礼

すいません。どこまで、載せていいものか迷ったもので・・・。下記に載せます。桁数を数えるプログラムです。
//自作関数が入ったmyfuc.c
intmfig(int);
int mfig(int a){
int b,i=10,s=0;
while(b>0){
b=a/i;
i=i*10;
s++;
}
return s;
}

//mainファイル(成功)
#include<stdio.h>
#include"myfuc.c"
int main(void){
int a,b;
a=100;
b=mfig(a);
printf("桁数は%dです。",b);
}

表示結果:
桁数は3です。

//mainファイル(失敗)
int main(void){
int a,b;
     printf("整数入力:");
scanf("%d",&a);
b=mfig(a);
printf("桁数は%dです。",",b);
}

表示結果:
整数入力:100
桁数は0です。

となります。
お願いします。

お礼日時:2006/09/04 12:52

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