printdir-deldir-bmp
- #include<unistd.h>
- #include<stdio.h>
- #include<dirent.h>
- #include<string.h>
- #include<stdlib.h>
- #include<sys/stat.h>
- #include<sys/types.h>
- #include<sys/wait.h>
- #include<time.h>
- FILE *fp,*fbmp,*flog;
- struct dirent *entry;
- struct stat statbuf;
- unsigned short BMP=0x4D42,
- JPG=0xD8FF,
- PNG[]={0x5089,0x474E,0x0A0D,0x0A1A},
- GIF[]={0x4947,0x3846,0x6139};
- char path1[],path2[],watchdog[],name[];
- struct tm *tm_ptr;
- time_t the_time;
- //判断图片头文件的结构体
- typedef struct tagRGBQUAD
- {
- unsigned char Blue;// À¶É«µÄÁÁ¶È£šÖµ·¶Î§Îª0-255)
- unsigned char Green; // ÂÌÉ«µÄÁÁ¶È£šÖµ·¶Î§Îª0-255)
- unsigned char Red; // ºìÉ«µÄÁÁ¶È£šÖµ·¶Î§Îª0-255)
- unsigned char Reserved;// ±£Áô£¬±ØÐëΪ0
- } RGN;
- void init()/*用于初始化程序*/
- {
- printf("file opened now\n");
- fp=fopen("wrg.text","w+");
- flog=fopen("wrlog.text","w+");
- fbmp=fopen("bmpname.text","w+");
- }
- void Exit()
- {
- printf("everything is gone\n");
- fclose(fp);
- fclose(fbmp);
- fclose(flog);
- }
- int istupian(char entry[])
- /*返加值为
- 1 bmp;
- 2 jpg;
- 3 png;
- 4 gif;
- */
- {
- FILE *fis;
- short int i=;
- unsigned short pis[];
- int flag=;//每次调用都进行初始化
- if((fis=fopen(entry,"r"))==NULL)
- printf("can not read %s\n",entry);
- fread(pis,,,fis);
- if(pis[]==BMP)
- {
- flag=;
- printf("it is a bmp\n");
- }
- else if(pis[]==JPG)
- {
- flag=;
- printf("it is a jpg\n");
- }
- else if(PNG[]==pis[]&&PNG[]==pis[]&&PNG[]==pis[]&&PNG[]==pis[])
- {
- flag=;
- printf("it is a png\n");
- }
- else if(GIF[]==pis[]&&GIF[]==pis[]&&GIF[]==pis[])
- {
- flag=;
- printf("it is a gif\n");
- }
- return flag;
- }
- void wrtlog()/*将文件的路径写入路径中*/
- {
- printf("write to wrtlg\n");
- fprintf(fp,"%s/%s\n",getcwd(NULL,),entry->d_name);
- fprintf(fbmp,"%s\n",entry->d_name);
- }
- void wrlog(char name[])// 将日记写入文件中
- {
- static int i=;
- (void)time(&the_time);
- //tm_ptr=gmtime(&the_time);
- if(i==) fprintf(flog,"文件名 /状态 /时间 /\n");
- ++i;
- fprintf(flog,"%s\t\t删除\t\t ",name);
- fprintf(flog,"%s\n",ctime(&the_time));
- //fprintf(flog,"%02d:%02d:%02d:%02d:%02d:%02d\n",tm_ptr->tm_year,tm_ptr->tm_mon+1,tm_ptr->tm_mday,tm_ptr->tm_hour,tm_ptr->tm_min,tm_ptr->tm_sec);
- }
- void printdir(char dir[])/*打印目录*/
- {
- DIR *dp;
- printf("printdir ******doing now\n");
- if((dp=opendir(dir))==NULL)
- {
- fprintf(stderr,"cannot open directory:%s\n",dir);
- return;
- }
- chdir(dir);
- while((entry=readdir(dp))!=NULL)
- {
- lstat(entry->d_name,&statbuf);
- if(S_ISDIR(statbuf.st_mode))
- {
- if(strcmp(".",entry->d_name)==||strcmp("..",entry->d_name)==)
- continue;
- printdir(entry->d_name);
- }
- else
- wrtlog();
- }
- chdir("..");
- closedir(dp);
- }
- int bmp(char filename[])
- {
- FILE *fo,*fin;
- RGN rgb,black={,,,},white={,,,};
- char name[]="\0";
- unsigned char temp[]="\0";
- unsigned int offset=;
- //在文件名中添加copy_来区别原文件
- int len=strlen(filename);
- strncpy(name,filename,len-);
- strcat(name,"_copy.bmp");
- if((fo=fopen(filename,"rb"))==NULL)
- printf("can not open %s",filename);
- if((fin=fopen(name,"wb"))==NULL)
- printf("can not open %s",name);
- printf("œ«ÖžÕëÒƶ¯µœÎ»ÍŒÊýŸÝµÄÆðʌλÖÃ\n");
- fseek(fo,,);
- printf("¿ªÊŒ¶ÁÈ¡Æ«ÒÆÁ¿\n");
- fread(&offset,,,fo);
- printf("ÏÔÊŸÆ«ÒÆλÖÃŽóС:");
- printf("%X\n",offset);
- printf("œ«ÖžÕëÒƶ¯µœÍŒÆ¬µÄÆðʌλÖÃ\n");
- fseek(fo,,);
- printf("¿ªÊŒÐŽÈëbmpÎÄŒþ\n");
- unsigned int i=;
- printf("Í·ÎÄŒþÐŽÈëÖÐ\n");
- while(i<=offset)
- {
- fread(temp,,,fo);
- fwrite(temp,,,fin);
- i+=;
- }
- printf("ÑÕɫת»»ÖÐ\n");
- while(!feof(fo))
- {
- fread(&rgb,,,fo);
- if((rgb.Blue+rgb.Green+rgb.Red)/<)
- fwrite(&black,,,fin);
- else
- fwrite(&white,,,fin);
- }
- fclose(fo);
- fclose(fin);
- printf("͌Ƭת»»³ÉºÚ°×¶þֵ͌œáÊø");
- return ;
- }
- //硬连接
- /*返加值为
- 1 bmp;
- 2 jpg;
- 3 png;
- 4 gif;
- */
- void lkbmp()
- {
- fseek(fp,,);
- fseek(fbmp,,);
- while(fscanf(fp,"%s",path1)!=EOF&&fscanf(fbmp,"%s",name)!=EOF)
- {
- //path2 的路径已经初始化,将文件名接到path2中,链接好后,将watchsog重新载入watchdog中
- strcat(path2,name);
- printf("%s",path2);
- if(link(path1,path2)==)
- {
- printf(" link is successful\n");
- }
- else
- printf(" link is error\n");
- //恢复母路径
- if(istupian(path2)==)
- bmp(path2);
- strcpy(path2,watchdog);
- }
- }
- //删除非图片文件
- void del_dir()
- {
- int picture=;
- fseek(fbmp,,);
- fseek(fp,,);
- if(fscanf(fbmp,"%s",name)==EOF)
- printf("del_dir is error");
- else while(fscanf(fp,"%s",path1)!=EOF&&fscanf(fbmp,"%s",name)!=EOF)
- {
- //path2 的路径已经初始化,将文件名接到path2中,链接好后,将watchsog重新载入watchdog中
- strcat(path2,name);
- if(!(picture=istupian(path2))&&unlink(path2)==)
- {
- printf("unlink %s is successful\n",path2);
- wrlog(path2);
- }
- else
- printf("unlink %s is error\n",path2);
- //恢复母路径
- strcpy(path2,watchdog);
- }
- }
- #include"myhead.h"
- #pragma pack(1)
- int main(int argc,char *argv[])
- {
- pid_t fork_res;
- char topdir[] = ".";
- if(argc>=)
- strcpy(topdir,argv[]);
- printf("已经得到目录:\"%s\"\n",topdir);
- printf("初始化中");
- init();
- printf("初始化完毕\n");
- printf("start printdir\n");
- printf("进入原始路径,得到母路径。");
- chdir(topdir);
- chdir("..");
- strcpy(path2,getcwd(NULL,));
- //创建D目录,可以以作为子进程
- strcat(path2,"/D/");
- mkdir(path2,);
- printf("母路径:%s\n",path2);
- strcpy(watchdog,path2);
- printdir(topdir);
- //链接文件
- lkbmp();
- printf("done.\n");
- //退出
- //删除原文件
- del_dir();
- //进入D目录
- Exit();
- printf("程序运行结束");
- }
printdir-deldir-bmp的更多相关文章
- Android raw to bmp
Android raw 格式转 bmp 图像 raw 保存的为裸数据,转换时都需要把它转成RGBA 的方式来显示.其中: 8位RAW: 四位RGBA 来表示一位灰度; 24位RAW: 三位RGB相同, ...
- 你所能用到的BMP格式介绍
原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...
- Linux C语言解析并显示.bmp格式图片
/************************* *bmp.h文件 *************************/ #ifndef __BMP_H__ #define __BMP_H__ # ...
- 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念
转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...
- Linux C语言解析.bmp格式图片并显示汉字
bmp.h 文件 #ifndef __BMP_H__ #define __BMP_H__ #include <unistd.h> #include <stdio.h> #inc ...
- BMP图像差分/比较
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char ...
- Matlab 读取文件夹中所有的bmp文件
将srcimg文件下的bmp文件转为jpg图像,存放在dstimg文件夹下 str = 'srcimg'; dst = 'dstimg'; file=dir([str,'\*.bmp']); :len ...
- 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)
稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像 ...
- 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片
本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp ...
- gif jpg bmp png的区别
PNG格式图片因其高保真性.透明性及文件大小较小等特性,被广泛应用于网页设计.平面设计中.网络通讯中因受带宽制约,在保证图片清晰.逼真的前提下,网页中不可能大范围的使用文件较大的bmp.jpg格式文件 ...
随机推荐
- python用法——Mixin
在读werkzeug和flask的源码中,经常能遇到类名中有mixin这个东西.这个东西的用法让我想到了java中的接口名有able的用法.今天我就来看了看这个mixin是什么东西. 学习了pytho ...
- LINUX下QT与C语言通过网卡名获取网卡IP与MAC
1.QT下 QString RuntimeConfig::ipAddress(QString network) { QList<QNetworkAddressEntry> list; QS ...
- 两阶段提交及JTA
两阶段提交及JTA 分布式事务 分布式事务简介 分布式事务是指会涉及到操作多个数据库(或者提供事务语义的系统,如JMS)的事务.其实就是将对同一数据库事务的概念扩大到了对多个数据库的事务.目的是为了保 ...
- python 解释器内建函数001
python解释器内建函数列表如下: 001.abs() 求绝对值 #!/usr/bin/python if __name__=="__main__": print(abs(-10 ...
- 一步一步学python(六) - 抽象
1.string转数字 import locale locale . atoi( str ) 2.创建函数 函数是可以调用(可能包含参数),执行某种行为并返回一个值 >>>impo ...
- linux之普通用户与root用户之间切换
- ngrok首页、文档和下载 - Web服务安全通道 - 开源中国社区
ngrok首页.文档和下载 - Web服务安全通道 - 开源中国社区 Web服务安全通道 ngrok 编辑/纠错 分享到 新浪微博腾讯微博 已用 +0 收藏 ...
- 数组中出现次数超过一半的数字 -java
数组中出现次数超过一半的数字 -java 方法一: 数组排序,然后中间值肯定是要查找的值. 排序最小的时间复杂度(快速排序)O(NlogN),加上遍历. 方法二: 使用散列表的方式,也就是统计每个数组 ...
- C++中的动态类型与动态绑定、虚函数、运行时多态的实现
动态类型与静态类型 静态类型 是指不需要考虑表达式的执行期语义,仅分析程序文本而决定的表达式类型.静态类型仅依赖于包含表达式的程序文本的形式,而在程序运行时不会改变.通俗的讲,就是上下文无关,在编译时 ...
- java/struts/Servlet文件下载与ftp文件上传下载
1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!download ...