2016-02-24 8 views
2

Попытка решить упражнение, когда мне приходится печатать случайное значение температуры между 35 ° C & -10 ° C каждые 5 секунд, за которым следует дата и время. Все выглядит так, как планировалось, однако, когда я ввожу код в тестовый скрипт, я получаю следующие ошибки.Неявное объявление функций srand, rand и system

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

Поскольку я не могу видеть свои ошибки, любая помощь будет принята с благодарностью.

+0

Вы искали ошибку? http://stackoverflow.com/questions/8440816/warning-implicit-declaration-of-function –

+0

У меня есть, но я, похоже, не нашел ничего, что связано с моей проблемой. – TheAlPaca02

ответ

4

Вы не смогли #include <stdlib.h>. В результате предполагается, что функции, которые вы вызывали, принимают неизвестное количество аргументов и возвращают значение типа int. Это вызывает неопределенное поведение.

Вставьте #include <stdlib.h> в начало вашего файла.

+0

Нормально ли, что мой скрипт способен пока я забыл об этом? Я всегда предполагал, что сценарий даже не запустился, если бы это было проблемой. – TheAlPaca02

+1

@ TheAlPaca02 Программа по-прежнему будет компилироваться с несогласованной подписью. Если параметры не имеют правильного типа, компилятор не сможет его обнаружить. – dbush

+0

Хорошо понял, спасибо! Завтра утром начнется тест-тест. – TheAlPaca02