2017-10-03 15 views
-2

クラスでは関数を実行していますが、複数の関数を複数のファイルで呼び出す方法については少し迷っています。同様に、プロジェクトでは、ヘッダーに加えて3つのファイル、テキストファイルから変数を取り込むファイル、それらの変数からさまざまな計算を実行するファイル、最後にすべてを保持するメインファイルがあります。Cの別のファイルからメソッドを呼び出す

がheader.h

#include <stdio.h>  
#include <ctype.h> 

main.cの

#include "header.h" 

void main(){ 
FILE *f, *o; 
int a, b, c, sum; 

while(getInt() != EOF){ 
    fprintf(calc()); 
} 

input.c:

int getInt(FILE *f, int a, int b, int c){ 
    fscanf(f, "%i %i %i", a, b, c); 
} 

calc.c:

int Calc(){ 
    sum = a+b+C; 
} 

私は主に問題を抱えている部分は、メインファイル内のcalc()のビットです。そのメソッドを呼び出してファイルに出力する適切な方法ですか?それとも良い方法がありますか?また、私はcalcにgetIntをインポートする必要がありますか、main関数は両方の関数を取り、それらを動作させることになっているので、私はうまくいきますか?誰でも私に与えることができる洞察力の助けをありがとう。

+1

s/'Calc' /' calc'を実行し、その関数から値を返します。 – user0042

+0

@ user0042これは私が今まで見たことのない単純なことを言っている最も曖昧な方法です。 –

+0

@CareyGregory置換構文(s//)はかなり一般的です。 – user0042

答えて

2

たぶん

がheader.h

#ifndef HEADER_H 
#define HEADER_H 
#include <stdio.h>  
#include <stdlib.h> 

int getInt(FILE *f, int *a, int *b, int *c); 
int calc(int a, int b, int c); 

#endif 

main.cのようなもの

#include "header.h" 

int main(void){ 
    FILE *f, *o; 
    int a, b, c;/* sum; */ 

    f = fopen("input.txt", "r"); 
    o = fopen("output.txt", "w"); 
    if(!f || !o){ 
     fprintf(stderr, "Failed to open the file.\n"); 
     exit(EXIT_FAILURE); 
    } 

    while(getInt(f, &a, &b, &c) != EOF){ 
     fprintf(o, "%d\n", calc(a,b,c)); 
    } 
    fclose(o); fclose(f); 
} 

input.c:

#include "header.h" 

int getInt(FILE *f, int *a, int *b, int *c){ 
    return fscanf(f, "%i %i %i", a, b, c); 
} 

calc.c:

int calc(int a, int b, int c){ 
    return a + b + c; 
} 
0

Main.cはあなたの関数について知らないので、コンパイルされません。 getIntのプロトタイプを持つinput.hを作成し、main.cとinput.cの両方に#include "input.h"を実行することができます。

同じことを他の関数に対して行い、 。

関連する問題