web-dev-qa-db-ja.com

関数srand、Randおよびsystemの暗黙の宣言

5秒ごとに35°Cから-10°Cの間のランダムな温度値を印刷し、その後に日付と時刻を印刷する必要がある演習を解決しようとしています。すべてが意図したとおりに機能しているように見えますが、テストスクリプトにコードを入力すると、次のエラーが発生します。

implicit declaration of functions errors これは私のコードです:

#include<stdio.h>
#include<unistd.h>
#include<time.h>
#define temp_max 35
#define temp_min -10
#define FREQUENCY 5

int main(void)
{
srand(time(NULL));
while(1)
{
int number = Rand() % (temp_max*100 - temp_min*100) + temp_min*100;
double temperature = (double) number;
temperature /= 100;
printf("Temperature=%1.2f @ ",temperature);
fflush(stdout); 
system("date");
sleep(FREQUENCY);
}
return 0;
}

これらは私の結果です:

These are my results

これは、テストスクリプトがチェックするものです。

This is what the test script checks for

私は自分の過ちを見ることができないので、どんな助けでも大歓迎です。

6
TheAlPaca02

#include <stdlib.h>に失敗しました。その結果、呼び出した関数は、不明な数の引数を受け入れ、タイプintの値を返すと想定されていました。これにより、未定義の動作が発生します。

ファイルの先頭に#include <stdlib.h>を置きます。

8
dbush

私も同様の問題を抱えていました。コードがコンパイルされましたが、警告メッセージが表示されました。

// Selection sort

#include <stdio.h>
#include <math.h>

int main()
{
    int list[100], i;

    for(i = 0 ; i < 100; i++) {
        list[i] = ( Rand()%99 + 1 );
        printf("%d ", list[i]);
    } printf("\n");

    return 0;
}

コンパイルすると、

gcc -o selection_sort selection_sort.c -lm
selection_sort.c: In function ‘main’:
selection_sort.c:11:15: warning: implicit declaration of function ‘Rand’; did you mean ‘nanl’? [-Wimplicit-function-declaration]
list[i] = ( Rand()%99 + 1 );
           ^~~~
           nanl

追加した後、<stdlib.h>警告メッセージが消えました。

0
Nafi Shahriyar