C中循环内的睡眠函数有问题
Having problems with the sleep function inside a loop in C
我正在用 C 编写代码,睡眠功能无法正常工作。
for(seq_n = 1; seq_n <= 3; seq_n++){
printf("Sequence %d:\n", seq_n);
for(val_n = 1; val_n <= 5; val_n++){
seq[val_n] = rand() % 9;
printf(" %d", seq[val_n]);
}
sleep(5);
printf("\nType the Sequence: \n");
for(val_n = 1; val_n <= 5; val_n++)
scanf("%d", &seq_user[val_n]);
checkSequence(seq, seq_user);
}
当我 运行 程序时,它首先出现 "Sequence (number)" 然后仅在 5 秒后打印序列和短语 "Type the Sequence",同时,发生在整个循环。
我希望 "Sequence (number)" 与序列同时出现,并且仅在 5 秒后程序要求输入序列。此外,我想知道如何让序列在5秒后消失。
我该怎么做?
更改为:
printf("\n");
sleep(5);
printf("Type the Sequence: \n");
输出缓冲到换行符。
如果您要打印到终端,stdout 是行缓冲的,即输出会累积在内部缓冲区中,直到您打印 \n
。 (如果输出不去终端,标准输出是块缓冲的,所以它只会在缓冲区满时输出任何东西。)
要刷新缓冲区(即立即输出其内容),您需要
fflush(stdout);
在你的 sleep
电话之前。
清除当前行,可以试试
printf("3[2K"); // erase the line the cursor is in
我假设您使用的是普通的 unix 终端模拟器;这些转义序列是系统特定的。
我正在用 C 编写代码,睡眠功能无法正常工作。
for(seq_n = 1; seq_n <= 3; seq_n++){
printf("Sequence %d:\n", seq_n);
for(val_n = 1; val_n <= 5; val_n++){
seq[val_n] = rand() % 9;
printf(" %d", seq[val_n]);
}
sleep(5);
printf("\nType the Sequence: \n");
for(val_n = 1; val_n <= 5; val_n++)
scanf("%d", &seq_user[val_n]);
checkSequence(seq, seq_user);
}
当我 运行 程序时,它首先出现 "Sequence (number)" 然后仅在 5 秒后打印序列和短语 "Type the Sequence",同时,发生在整个循环。
我希望 "Sequence (number)" 与序列同时出现,并且仅在 5 秒后程序要求输入序列。此外,我想知道如何让序列在5秒后消失。
我该怎么做?
更改为:
printf("\n");
sleep(5);
printf("Type the Sequence: \n");
输出缓冲到换行符。
如果您要打印到终端,stdout 是行缓冲的,即输出会累积在内部缓冲区中,直到您打印 \n
。 (如果输出不去终端,标准输出是块缓冲的,所以它只会在缓冲区满时输出任何东西。)
要刷新缓冲区(即立即输出其内容),您需要
fflush(stdout);
在你的 sleep
电话之前。
清除当前行,可以试试
printf("3[2K"); // erase the line the cursor is in
我假设您使用的是普通的 unix 终端模拟器;这些转义序列是系统特定的。