c语言编写一个延时函数 该函数接受一个整数参数表示延时的毫秒数
时间: 2024-09-22 08:01:54 浏览: 35
在C语言中,由于缺乏内建的定时功能,我们通常使用`sleep`函数(Linux/Unix系统)或者`Sleep`函数(Windows系统)来实现短暂的延时。但是,这些函数并非针对精确的毫秒级控制,如果你需要更精确的延迟,可以使用系统调用或者特定库如POSIX的`usleep`函数(对微秒进行延迟)。不过,对于简单场景,我们可以使用标准库函数`CLOCKS_PER_SEC`,它表示每秒的时钟周期数,结合时间差来间接模拟延时。这里提供一个使用`clock()`函数的粗略延时示例:
```c
#include <time.h>
#include <unistd.h> // Linux/Unix系统下可用
// 延迟函数
void delay(int milliseconds) {
struct timespec ts;
clock_t start;
// 获取当前的时间戳
start = clock();
// 计算目标时间(单位:时钟周期)
ts.tv_sec = milliseconds / CLOCKS_PER_SEC;
ts.tv_nsec = (milliseconds % CLOCKS_PER_SEC) * 1000000; // 秒*1e6 + 微秒
// 等待直到达到目标时间
while ((clock() - start) < ts.tv_sec * CLOCKS_PER_SEC + ts.tv_nsec / 1000000);
}
```
注意,这个方法并不十分精确,因为实际延迟可能会受到CPU负载、系统调度等因素影响。如果对精度要求较高,建议使用专门的定时库,如`libuv`、`nanosleep`等。
阅读全文