2016-09-28 11 views
0

これはこれまで私が持っていたものです。私は構造を学習しており、割り当てのための構造を使用しなければなりませんでした。私は自分のコードに何が間違っているのかは分かりません。私がデバッグすると、時、分、秒は0になります。私のコードを見てください。経過時間を見つける

#include <stdio.h> 

struct calculate 
{ 
    int hours; 
    int minutes; 
    int seconds; 
}; 

struct calculate N1; 
struct calculate N2; 
int resulthr, resultmin, resultsec; 

int substract(struct calculate N1, struct calculate N2) 
{ 
    resultsec = N2.seconds - N1.seconds; 
    if (resultsec < 0) 
    { 
     resultsec = 60 + resultsec; 
     --N2.minutes; 
    } 

    resultmin = N2.minutes - N1.minutes; 
    if (resultmin < 0) 
    { 
     resultsec = 60 + resultmin; 
     --N2.hours; 
    } 

    resulthr = N2.hours - N1.hours; 
    if (resulthr < 0) 
    { 
     resulthr = 24 + resultsec; 
    } 
    return 0; 
} 

int main(void) 
{ 
    printf("Enter two times.(hh:mm:ss) "); 
    scanf("%i:%i:%i", &N1.hours, &N1.minutes, &N1.seconds); 
    scanf("%i:%i:%i", &N2.hours, &N2.minutes, &N2.seconds); 

    int substract(calculate N1, calculate N2); 

    printf("The elasped time is %i:%i:%i.\n", resulthr, resultmin, resultsec); 

    return 0; 
} 

http://i.stack.imgur.com/VlYVL.png

+0

デバッガを使用してください。 – ilotXXI

答えて

0

コールsubstract(N1、N2); の代わりに int substract(N1を計算する、N2を計算する);メイン機能の

あなたはそれを呼び出すのではなく、宣言していました。

+0

ありがとうございます。また、私はint substract関数に間違いがありました... resultec = 60 + resultminはresultmin = 60 + resultminだったはずです – Newbiehere

2

あなたmain関数内の行int substract(calculate N1, calculate N2);は、以前に定義されたsubtractメソッドを呼び出すことはありませんが、それは実際には同じ名前の別の関数を宣言します。

int res = subtract(N1, N2); 

その後resは0でなければならないと(グローバル)変数は、resulthr,resultmin,resultsec所望の値を有するべきである:実際メソッド書き込みを呼び出すこと

Btw:グローバル変数とローカル変数、およびパラメータを渡してください。

関連する問題