DOS环境下使用TurboC修改文件时间戳源代码

需积分: 10 6 下载量 113 浏览量 更新于2024-10-16 收藏 2KB TXT 举报
"TurboC写的修改文件创建时间、修改时间的源代码" 这段代码是用 TurboC 编程语言编写的,它的主要功能是修改文件的创建时间和修改时间。TurboC 是 Borland 公司在 1980 年代末至 1990 年代初推出的一款 C 语言编译器,它在 DOS 环境下运行,广泛用于教学和早期的个人计算机编程。 代码中的 `touch.c` 文件包含了若干个函数,其中最主要的函数是 `touch()`,这个函数的目的是将指定文件的时间戳更新为当前系统时间。`touch` 命令在许多操作系统中都有,通常用于更新文件或目录的访问时间(atime)和修改时间(mtime),但在这个特定的实现中,它也更新了文件的创建时间(ctime)。 代码首先引入了几个头文件,这些头文件提供了必要的函数和结构体定义,以便于操作文件和时间: - `<stdio.h>`:标准输入输出库,包含基本的输入输出函数,如 `printf`。 - `<dos.h>`:DOS 操作系统相关的函数和宏,如 `getdate` 和 `gettime`。 - `<dir.h>`:DOS 目录操作,提供了 `findfirst` 和 `findnext` 函数,用于遍历目录。 - `<io.h>`:I/O 流操作,如打开和关闭文件。 - `<fcntl.h>`:文件控制,定义了 `open` 和 `close` 等函数。 `help()` 函数用于显示程序的使用帮助,它列出了命令的语法和用途。`error()` 函数则在找不到文件时调用,输出错误信息并退出程序。 `touch()` 函数接收一个参数 `file`,表示要修改时间的文件名。它首先获取当前系统的日期和时间,然后将这些时间信息填入 `struct ftimemyftime` 结构体,这个结构体对应了文件的时间戳。接着,代码尝试找到文件并更新其时间信息。如果文件不存在,`findfirst` 会返回错误,程序调用 `error()` 函数。 代码中的 `findfirst` 和 `findnext` 函数是 DOS 的目录遍历函数,它们用于查找匹配指定模式的文件。`strrchr` 函数用于在字符串中查找最后一个指定字符,这里是为了处理带有路径的文件名。 最后,代码使用 `open` 函数打开文件,`_chsize` 更新文件大小(这可能是因为某些版本的 `touch` 需要更改文件大小以更新时间),然后用 `close` 关闭文件。`_chtime` 和 `_utime` 函数分别用于设置文件的修改时间和创建时间。 这段代码虽然在 DOS 环境下有效,但在现代操作系统中,如 Windows 或 Linux,需要使用不同的方法来修改文件时间戳,因为这些系统提供了不同的 API 和工具来处理文件属性。在 Windows 中,可以使用 `SetFileTime` 函数,而在 Unix/Linux 系统中,可以使用 `utimensat` 或 `utimes` 函数。