秒を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;
}
(1)ここで 'times'とは何ですかstruct time_t malko = times(a);'? 'times'という名前の関数が表示されません(2)' prom'がUBを呼び出す 'for'ループの最初の繰り返しで初期化されました –
' time_t'は*標準*型です。構造体タグ(名前)は独自の名前空間に存在しますが、構造体に同じ名前を標準型として使用すると、混乱の原因となります。 –
実際の関数名として関数の引数名を使用しようとすると、あなたは間違いなく必然的に[良い初心者の本を見つけるはずです](http://stackoverflow.com/questions/562303/the-definitive-c-book-ガイドとリスト)、最初からすべてを始める。 'times'を' fastest_time'関数の引数名として使うと、2つ以上の引数を持つ関数をどのように呼び出そうとしますか? –