题目:遍历命令行输入的目录,找到目标文件,并在目标文件中追加写入hello world!
使用方法: ./a.out dir_name file_name
考点:DIR类和结构体dirent的使用,opendir,readdir函数的使用,学会遍历目录,openat函数的使用,还有O_APPEND追加至文件末尾的使用。
源码:
#include <sys/types.h> #include <string.h> #include <fcntl.h> #include <dirent.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { DIR *dp; struct dirent *dirp; if (argc != 3) { fprintf(stderr, "usage: %s dir_name file_name\n", argv[0]); exit(1); } if ((dp = opendir(argv[1])) == NULL ) { fprintf(stderr, "can't open '%s'\n", argv[1]); exit(1); } int flag =0; while ((dirp = readdir(dp)) != NULL ){ if(strcmp(dirp->d_name,argv[2])==0) { int fd = openat(dirfd(dp),argv[2],O_WRONLY|O_APPEND); char * s = "hello,world!\n"; write(fd,s,strlen(s)); close(fd); flag = 1; } } closedir(dp); if(flag==1){ printf("find and write successfully!\n"); } return(0); }
输出结果: