Следующий код на C работает отлично. Sleep(n) в C принимает аргумент n как целое число, шаблон, создаваемый таким кодом, является быстрым, а в Sleep(1) очень медленным. Я хочу использовать что-то среднее, например, сон (0,5). Есть ли как-то это сделать????? У меня ОС Windows
#include <stdio.h>
#include <stdbool.h>
#include <direct.h>
void main()
{
char ch='*';
int i=0;bool flag=true;
while(0<i<10)
{
if (flag)
{
++i;
for(int j=0;j<i;j++) //For increaing-pattern
{
printf("%c",ch);
}
printf("\n");
if (i==10)
{
sleep(1);
flag=!flag;
}
}
else if (!flag)
{
--i;
for(int j=i;j>-1;j--) //For increaing-pattern
{
printf("%c",ch);
}
printf("\n");
if (i==0)
{
sleep(1);
flag=!flag;
}
}
}
}
Как упоминалось ранее, программа печатает слишком быстро и слишком медленно во время сна (1).
🤔 А знаете ли вы, что...
C имеет строгую типизацию, что способствует обнаружению ошибок во время компиляции.
В Windows:
#include <windows.h>
void delay( unsigned long ms )
{
Sleep( ms );
}
В *nixen/POSIX:
#include <time.h>
void delay( unsigned long ms )
{
struct timespec t = { .tv_sec = ms / 1000, .tv_nsec = (ms % 1000) * 1000000 };
nanosleep( &t, NULL );
}
Вызов с указанием количества миллисекунд до сна. Полсекунды будет 500:
delay( 500 );
Как любезно отметил в комментариях Джонатан Леффлер, из POSIX объявлено устаревшим и удалено следующее:
#include <unistd.h>
void delay( unsigned long ms )
{
usleep( ms * 1000 );
}