1. 目录文件IO
1.1 opendir——打开一个目录,获得目录流指针
1.2 closedir——关闭目录流指针
1.3 readdir——从目录流中读取一个目录项
4. mkdir——创建目录pathname
5. umask——修改目录当前的掩码值(掩码值对应是1的权限不允许被拥有)
6. rmdir——删除目录文件
7. getcwd——获得当前所在目录的绝对路径
8. chdir——int chdir(const char *path);
2. 获取时间函数
2.1 time
1. 定义
time_t time(time_t *tloc);
2. 功能
获得1970年到现在的秒数
3. 参数
tloc:存放秒数的空间首地址
4. 返回值
成功返回1970年到现在的秒数
失败返回-1
5. 示例程序
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t tm = time(&tm);
printf("time: %lu\n", tm);
return 0;
}
2.2 localtime
1. 定义
struct tm *localtime(const time_t *timep);
2. 功能
将一个秒数转化成日历时间
3. 参数
timep:保存秒数空间的地址
4. 返回值
成功返回保存日历时间结构体的指针
失败返回NULL
5. 示例程序
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t t = time(&t);
struct tm *time_info = localtime(&t);
printf("%04d-%02d-%02d ", time_info->tm_year+1900, time_info->tm_mon+1, time_info->tm_mday);
printf("%02d:%02d:%02d\n", time_info->tm_hour, time_info->tm_min, time_info->tm_sec);
return 0;
}
2.3 ctime
1. 定义
char *ctime(const time_t *timep);
2. 功能
将时间秒数转化成字符串
3. 参数
timep:保存秒数空间的地址
4. 返回值
成功返回获得时间字符串的首地址
失败返回NULL
5. 示例程序
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t t = time(&t);
printf("%s", ctime(&t));
return 0;
}
3.链接文件
3.1 symlink
1. 定义
int symlink(const char *oldpath, const char *newpath);
2. 功能
创建一个链接向oldpath文件的新符号链接文件
3. 参数
oldpath:被链接向的文件的路径
newpath:新符号链接文件
4. 返回值
成功返回0
失败返回-1
5. 示例程序
#include <stdio.h>
#include <unistd.h>
int main(void)
{
// ln -s 01ls.c softlink
int ret = symlink("./01ls.c", "softlink");
if(-1 == ret)
{
printf("symlink error\n");
return 1;
}
return 0;
}
3.2 remove
1. 定义
int remove(const char *pathname);
2. 功能
删除一个文件
3. 参数
pathname:删除文件的路径
4. 返回值
成功返回0
失败返回-1
5. 示例程序
#include <stdio.h>
int main(void)
{
int ret= remove("./softlink");
if(-1 == ret)
{
printf("remove error\n");
return -1;
}
return 0;
}
3.3 rename
1. 定义
int rename(const char *oldpath, const char *newpath);
2. 功能
将一个老的路径名改为新的路径
3. 参数
oldpath:老路径名
newpath:新路径名
4. 返回值
成功返回0
失败返回-1
5. 示例程序
#include <stdio.h>
int main(void)
{
int ret = rename("./123", "aaa");
if(-1 == ret)
{
printf("rename error\n");
return -1;
}
return 0;
}
3.4 link
1. 定义
int link(const char *oldpath, const char *newpath);
2. 功能
创建一个硬链接文件
3. 参数
oldpath:要链接向的文件
newpath:创建的新硬链接文件
4. 返回值
成功返回0
失败返回-1
5. 示例程序
#include <stdio.h>
#include <unistd.h>
int main(void)
{
int ret = link("./01ls.c", "hardlink");
if(-1 == ret)
{
printf("link error\n");
return -1;
}
return 0;
}
3.5 truncate
1. 定义
int truncate(const char *path, off_t length);
2. 功能
将文件截断到指定长度
3. 参数
oldpath:要链接向的文件
newpath:创建的新硬链接文件
4. 返回值
成功返回0
失败返回-1
5. 示例程序
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
int main(void)
{
int ret = truncate("./aaa",10);
if(-1 == ret)
{
printf("trunc error\n");
return -1;
}
return 0;
}
3.6 perror
1. 定义
void perror(const char *s);
2. 功能
打印s字符串和errno对应的错误信息
3. 参数
s:要打印在终端上的出错信息
4. 返回值
缺省
5. 示例程序
#include <stdio.h>
int main(void)
{
FILE* fp = fopen("456", "r");//456不存在
if(NULL == fp)
{
perror("fopen error!\n");
return -1;
}
return 0;
}
3.7 strerror
1. 定义
char *strerror(int errnum);
2. 功能
打印errnum出错码对应的出错信息
3. 参数
errnum:出错errno号
4. 返回值
成功返回对应的错误信息
ruturn 1;
5. 示例程序
#include <stdio.h>
#include <string.h>
int main(void)
{
int i = 0 ;
for(i = 0; i < 256; i++)
{
printf("%d %s\n", i, strerror(i));
}
return 0;
}
3.7 strerror
1. 定义
void error(int status, int errnum, const char *format, ...);
2. 功能
程序出错打印对应出错原因和用户输入字符串并退出
3. 参数
status:程序退出的状态
EXIT_FAILURE 1
EXIT_SUCCESS 0
errnum:错误码
format: 类似printf打印
4. 返回值
缺省
__FILE__ 表示是那个文件
__LINE__表示第几行
__func__表示在那个函数
__DATE__
__TIME__
c 内置宏
5. 示例程序
#include <stdio.h>
#include <error.h>
#include <errno.h> //extern int errno
int main(void)
{
FILE* fp = fopen("456","r");
if(NULL == fp)
{
error(1,errno,"fopen,file:%s fun:%s line:%d\n",__FILE__,__func__,__LINE__);
return 1;
}
return 0;
}
3.8 工程管理工具
1.在文件夹下编写一个名为makefile的脚本文件
makefile
Makefile
2.语法规则:
要生成的文件:所有依赖的文件(中间以空格隔开)
生成方式
3.执行步骤:
1.终端输入make
2.make执行对应目录下的makefile文件
3.生成makefile文件中第一个目标
4.查找所有依赖的文件是否都存在
5.如果存在则利用生成方式生成目标文件
makefile内部维护一个时间戳
4.makefile变量:
$@:要生成的文件
$^:所有依赖的文件
$<:第一个依赖的文件
= 直接赋值
:= 覆盖赋值
+= 原来的基础上新加
?= 前面没有给变量赋值,则给变量赋等号后的值
变量已经有值,不会给变量赋新值
示例脚本
OBJ= a.out
SRC = add.c
SRC +=mul.c main.c
$(OBJ):$(SRC)
gcc $(SRC)-o $(OBJ)
clean:
rm $(OBJ)