经验分享 – 基础知识 | 每日一练(123)

基础知识练习

读者:怎样对多于内存的数据排序?

小林:你可以用 “外部排序”法。基本的思想是对数据分段进行排序, 每次的大小尽可能多的填入内存中, 把排好序的数据段存入暂时文件中,再归并它们。如果你的操作系统提供一个通用排序工具, 你可以从程序中调用。

读者:怎样在 C 程序中取得当前日期或时间?

小林:只要使用函数 time(), ctime(), localtime() 和/或 strftime() 就可以了。下面是个简单的例子:

#include <stdio.h>

#include <time.h>

int main()

{

time_t now;

time(&now);

printf(“It’s %s”, ctime(&now));

return 0;

}

用函数 strftime() 可以控制输出的格式。如果你需要小于秒的解析度,

读者:我知道库函数 localtime() 可以把 time t 转换成结构 struct tm,而 ctime() 可以把 time t 转换成为可打印的字符串。怎样才能进行反向操作, 把 struct tm 或一个字符串转换成 time t?

小林:ANSI C 提供了库函数 mktime(), 它把 struct tm 转换成 time t。把一个字符串转换成 time t 比较难些, 这是由于可能遇到各种各样的日期和时间格式。某些系统提供函数 strptime(), 基本上是 strftime() 的反向函数。

正文完