实用函数库

实用函数库包含了一些杂项函数。它需要以下声明:

#include <stdlib.h>

有用的函数包括:

  • atof( <string> ):将数字字符串转换为 double 类型的值。
  • atoi( <string> ):将数字字符串转换为 int 类型的值。
  • atol( <string> ):将数字字符串转换为 long 类型的值。
  • rand():生成伪随机整数。
  • srand( <seed> ):为随机数生成器设定种子,"seed" 是一个 int 类型。
  • exit( <status> ):退出程序,"status" 是一个 int 类型。
  • system( <string> ):告诉系统执行由 "string" 给出的程序。
  • abs( n ):返回 int 类型参数 n 的绝对值。
  • labs( n ):返回 long 类型参数 n 的绝对值。

函数 atof()atoi()atol() 如果无法将给定的字符串转换为相应的值,则会返回 0。


时间和日期库

时间和日期库包括多种功能,其中一些较为冷僻且非标准。此库需要以下声明:

#include <time.h>

最基本的函数是 time(),它返回自1970年1月1日午夜协调世界时(UTC)以来的秒数(不包括闰秒)。返回值为 time_t 类型(即 long 类型),在头文件中定义。

以下程序使用 time() 来实现一个以秒为单位的延迟:

/* delay.c */

#include <stdio.h>
#include <time.h>

void sleep(time_t delay);

void main()
{
  puts("Delaying for 3 seconds.");
  sleep(3);
  puts("Done!");
}

void sleep(time_t delay)
{
  time_t t0, t1;
  time(&t0);  // 获取当前时间
  do
  {
    time(&t1);  // 获取当前时间
  }
  while ((t1 - t0) < delay);  // 判断时间差是否达到延迟时间
}

ctime() 函数将 time() 返回的时间值转换为时间和日期的字符串。以下小程序打印当前时间和日期:

/* time.c */

#include <stdio.h>
#include <time.h>

void main()
{
  time_t *t;
  time(t);  // 获取当前时间
  puts(ctime(t));  // 打印时间字符串
}

该程序会打印类似如下格式的字符串:

Tue Dec 27 15:18:16 1994
Last modified: Monday, 27 January 2025, 11:55 PM