Why does a while loop with clock() execute first in C? [duplicate] - c

This question already has answers here:
Why does printf not flush after the call unless a newline is in the format string?
(10 answers)
What is it with printf() sending output to buffer?
(3 answers)
Closed 1 year ago.
I am learning C and currently trying to understand why in the code part below the while loop is executed before the for loop!?
The code should display a 3-digit random number and then wait n seconds.
srand(time(NULL));
time_t rnd_number_length = 3;
for (int i=0; i < rnd_number_length; i++) {
printf("%d ", rand() % 10);
}
clock_t waiting_time = clock() + 5 * CLOCKS_PER_SEC;
while(clock() < waiting_time) {}
However, when I compile and run this code, the program waits first and only then displays the random digits. Why is this happening?

Related

"gets" breaks in C with a while loop [duplicate]

This question already has answers here:
fgets doesn't work after scanf [duplicate]
(7 answers)
how to supress warning "gets() is deprecated"? [duplicate]
(1 answer)
Why is the gets function so dangerous that it should not be used?
(13 answers)
Closed 2 years ago.
If the while loop continues "gets(purpose); just gets skipped after the first loop
while(finish==0){
printf("PASSWORD LAB EL?? WHAT IS IT??\n:");
gets(purpose);
printf("Put lth the length (LESS THAN 2048)\n:");
scanf("%d", &length);
if(length<=2048){
passwords = fopen("password.txt","a");
fprintf(passwords,"%s:\n", purpose);
for(length; length>0; length--){
int bruh = rand() % 78;
printf("%c", words[bruh]);
fprintf(passwords,"%c", words[bruh]);
finish = 1;
}
}else{
printf("TOO MUCH LAWL\n\n");
system("clear");
finish = 0;
}
}

What causes a code to just randomly subtract or add small fractals to floating-point numbers? [duplicate]

This question already has answers here:
Is floating point math broken?
(31 answers)
Why are floating point numbers inaccurate?
(5 answers)
Closed 3 years ago.
Made a code that calculated the amount of negative numbers in an array and shows those numbers. The problem is when the program prints out the number, it changes the number a slight bit, adding or subtracting something like 0.003.
I have absolutely no clue as to what's wrong with it, tried asking my professor; she said she didn't know, so I am here.
float col[10];
...
for (int i = 0; i < 10; ++i)
{
scanf_s("%f", &col[i]);
}
...
printf("\n");
printf("There are %d negative numbers\n", ct);
for (int i = 0; i < 10; ++i)
{
if (col[i] < 0)
{
printf("[%d]=%f ", i, col[i]);
}
}
...
Put in -7786.88, command line printed out -7786.888184. It's fine on integers, just prints out a bunch of zeroes after the dot.

Need help implementing total random characters in C [duplicate]

This question already has answers here:
Why do I always get the same sequence of random numbers with rand()?
(12 answers)
Generating a random bit - lack of randomness in C rand()
(4 answers)
Closed 3 years ago.
I am creating a program that prints out 1000 random occurrences of the letters "H" and "T" and my code implements rand()%2 but as i can see from running this program (code below) that its not completely random (the letters are random but always the same with every execution). I want to establish a more effective way by implementing RANDMAX to make every case of the program running completely random, how would I be able to do this?
#include <stdio.h>
#include<stdlib.h>
int main()
{
int i=1,n;
char ch ;
for( i = 1; i <= 1000 ; i ++ )
{
n = rand()%2;
if(n==0)
ch = 'T';
else
ch = 'H';
putchar(ch);
}
return 0;
}
Just add
srand(time(NULL));
after
int main()
{
That will initialize the random generate with a new seed every time you run the program. In this way, you'll get a new random sequence every time.

C program for generating random numbers [duplicate]

This question already has answers here:
How to generate a random int in C?
(32 answers)
Closed 8 years ago.
I'm writing a code that will return a random number between 5 and 20, and i'm running into a problem where it will always produce the same number over again and i can't seem to solve it.
#include <stdlib.h>
#include <stdio.h>
int random = 0;
int randomnumbergen() {
srand(12345);
random = rand() % (20 - 15) + 15;
return random;
}
First, you'll want to call srand() at the beginning of your program one time.
Next, you'll want to replace
srand(12345);
with
srand (time(NULL));
You're using the same seed each time - producing identical results. You need to not hardcode it.

How to get the current time in milliseconds in C Programming [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
How to measure time in milliseconds using ANSI C?
How can I get the Windows system time with millisecond resolution?
We want to calculate the time which a player have taken to finish the game.
But with time.h we could only calculate in seconds. but that is not exact. Is it possible to get the time in milliseconds?
and what is the %? to printf?
There is no portable way to get resolution of less than a second in standard C So best you can do is, use the POSIX function gettimeofday().
quick answer
#include<stdio.h>
#include<time.h>
int main()
{
clock_t t1, t2;
t1 = clock();
int i;
for(i = 0; i < 1000000; i++)
{
int x = 90;
}
t2 = clock();
float diff = ((float)(t2 - t1) / 1000000.0F ) * 1000;
printf("%f",diff);
return 0;
}
If you're on a Unix-like system, use gettimeofday and convert the result from microseconds to milliseconds.

Resources