Implicit declaration of functions srand, rand and system
Asked Answered
B

2

17

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.

Blackcap answered 24/2, 2016 at 21:16 Comment(2)
Have you searched your error? #8441316Oubre
I have but I didn't seem to find anything that related to my problem..Blackcap
B
39

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.

Bursitis answered 24/2, 2016 at 21:19 Comment(3)
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..Blackcap
@Blackcap 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.Bursitis
Ok understood, thanks! Will run the testscript again tomorrow morning.Blackcap
E
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.

Era answered 13/7, 2018 at 2:6 Comment(1)
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 answerNaissant

© 2022 - 2024 — McMap. All rights reserved.