2017-06-19 17 views
0

秒をsecods-minutes-hoursに変換するプログラムです。コンパイルしようとすると、 "struct time_t malko = times(a);"で "Invalid initializer"というエラーが発生します。誰か助けてください P.S.私はポインタや何か他のものではなく、構造体でそれを行う必要があります!代わりにstruct time_t malko=times(a);エラー "無効なイニシャライザ"


#include <stdio.h> 

    struct time_t { 
    float sec; 
    int min,hours; 
}; 

struct time_t fastest_time (float times[3]){ 
    int i; 
    int prom; 
    struct time_t malko; 
    for(i=0;i<3;i++) { 
    if(prom>times[i]) {prom=times[i];} 
} 
    malko.sec=prom%60; 
    prom=prom/60; 
    malko.min=prom%60; 
    prom=prom/60; 
    malko.hours=prom%60; 

    return malko; 
} 


int main() { 
    float a[3]={3423,1234,34232}; 
    struct time_t malko=times(a); 
    printf("\n %d %d %f", malko.hours, malko.min, malko.sec); 

    return 0; 
} 
+2

(1)ここで 'times'とは何ですかstruct time_t malko = times(a);'? 'times'という名前の関数が表示されません(2)' prom'がUBを呼び出す 'for'ループの最初の繰り返しで初期化されました –

+2

' time_t'は*標準*型です。構造体タグ(名前)は独自の名前空間に存在しますが、構造体に同じ名前を標準型として使用すると、混乱の原因となります。 –

+0

実際の関数名として関数の引数名を使用しようとすると、あなたは間違いなく必然的に[良い初心者の本を見つけるはずです](http://stackoverflow.com/questions/562303/the-definitive-c-book-ガイドとリスト)、最初からすべてを始める。 'times'を' fastest_time'関数の引数名として使うと、2つ以上の引数を持つ関数をどのように呼び出そうとしますか? –

答えて

3

struct time_t malko=fastest_time(a);

時間がmainに定義されていません。 (ここでは出力:http://codepad.org/yvGhoHw4

+0

ありがとうございました! –

+0

'time_t'は既にcライブラリに定義されています。名前を再使用すると、問題が発生する可能性があります。 –