函数 srand、rand 和 system 的隐式声明

Implicit declaration of functions srand, rand and system

试图解决一个练习,我必须每 5 秒打印一个介于 35°C 和 -10°C 之间的随机温度值,然后是日期和时间。一切看起来都按预期工作,但是当我在测试脚本中输入代码时,出现以下错误。

这是我的代码:

#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;
}

这些是我的结果:

这是测试脚本检查的内容:

由于我看不到自己的错误,任何帮助将不胜感激。

您未能#include <stdlib.h>。因此,您调用的函数被假定为接受未知数量的参数和 return 类型 int 的值。这会导致未定义的行为。

#include <stdlib.h> 放在文件的顶部。

我遇到了类似的问题。我的代码已编译,但收到警告消息。

// 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> 警告信息消失了。