Привет, ребята, я начинающий программист на C, и, когда я программировал простую терминальную систему, я заметил, что возникла проблема с последовательностью выполнения мой код: вместо отображения времени, когда я запускаю программу, сначала курсор мигает примерно 3 секунды, а затем отображается время. Вот мой код:Понимание последовательности программ при использовании для (; clock() - now <CLOCKS_PER_SEC;)
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 10
int main(int argc, char** argv)
{
time_t t;
size_t sz;
clock_t now;
struct tm* tm;
static char strtm[BUFSIZE];
while (1)
{
now = clock();
t = time(NULL);
tm = gmtime(&t);
sz = strftime(strtm, sizeof(strtm), "%T", tm);
#if 1
for (;(clock() - now) < (CLOCKS_PER_SEC/3);)
printf("\r");
#endif
printf("%s", strtm);
}
return 0;
}
Итак, чтобы проверить последовательность программ, я написал следующий простой код, и он ведет себя аналогичным образом. То, что я хочу, следующий код, чтобы сделать это
- Дисплей "1 2 3 4",
- Переместите курсор на '1',
- ждать около 5 сек, а затем выйти из
Однако, вместо того, чтобы делать что это первый ожидает в течение 5 секунд до отображения «1 2 3 4»
#include <time.h>
#include <stdio.h>
int main()
{
clock_t now = clock();
printf("1 2 3 4");
printf("\r");
for (;(clock() - now) < (5 * CLOCKS_PER_SEC);)
;
return 0;
}
Я работаю на Linux, так что я попытался с помощью-й е sleep()
функция, и я получил тот же результат:
#include <unistd.h>
#include <stdio.h>
int main()
{
printf("1 2 3 4");
printf("\r");
sleep(5);
return 0;
}
Мне нужно, чтобы вы помогли мне понять последовательность моей программы, потому что, кажется, запустив для loop/sleep()
функции первого до printf()
. Исправления очень приветствуются. Спасибо.
Спасибо @Paul R Я попробовал ваш ответ на все программы, и теперь они в порядке – Minathe