14

Trying to solve an exercise where I have to print a random temperature value between 35°C & -10°C every 5 seconds followed by the date and time. Everything looks to be working as intended, however when I enter the code in a test script I get following errors.

implicit declaration of functions errors This is my code:

#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:

These are my results

This is what the test script checks for:

This is what the test script checks for

As I am unable to see my own mistakes, any help would be greatly appreciated.

TheAlPaca02
  • 485
  • 3
  • 8
  • 20

2 Answers2

36

You failed to #include <stdlib.h>. As a result, the functions you called were assumed to accept an unknown number of arguments and return a value of type int. This causes undefined behavior.

Put #include <stdlib.h> at the top of your file.

dbush
  • 205,898
  • 23
  • 218
  • 273
  • Is it normal that my script is able to run while I forgot this include? I always assumed that the script wouldn't even have ran if this was the problem.. – TheAlPaca02 Feb 24 '16 at 21:22
  • 1
    @TheAlPaca02 The program will still compile with the mismatched signature. If the parameters are not of the correct type however, the compiler won't be able to detect it. – dbush Feb 24 '16 at 21:31
  • Ok understood, thanks! Will run the testscript again tomorrow morning. – TheAlPaca02 Feb 24 '16 at 21:34
1

I had a similar problem. My code was compiled but I got warning message.

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

When I compile it,

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

After adding <stdlib.h> warning message was gone.

Nafi Shahriyar
  • 123
  • 1
  • 9
  • 2
    So basically you are saying that the other answer solved your problem? You don't need to post another answer to say that the other answer is good -- you can simply upvote the other answer – M.M Jul 13 '18 at 03:33