汉扬编程 C语言入门 批量删除指定字符串(C语言基础)

批量删除指定字符串(C语言基础)

/**

批量删除指定字符串(C语言基础)

程序功能:

批量删除指定字符串(C语言基础)

目录下或分区下的文件批量剔除指定字符串

批量删除指定字符串(C语言基础)

作用范围:

批量删除指定字符串(C语言基础)

能处理目录树或分区下所有文件

批量删除指定字符串(C语言基础)

若出现权限问题可以预先修改文件权限后再执行

具体用法代码下面有截图

注意:

会用到相关的第三方库或自定义头文件

**/

#include "stdafx.h"

#include <windows.h>

#include <windowsx.h>

#include "resource.h"

#include "MainDlg.h"

#include<stdio.h>

#include<string.h>

#include<ctype.h>

#include<stdlib.h>

#include<io.h>

#include<direct.h>

#define MAX_PATH 260

#define M_PATH 260 /*文件最大路径长度*/

/*函数声明*/

char *strrstr(char *file,const char *str);

void myRen2(char *file);

void dirsearch(const char *path);

void dir_fname(const char *filepath,char *dir,char *fname);

/*全局变量*/

char str1[M_PATH],s[M_PATH];

int Slen;

BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

switch(uMsg)

{

HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);

HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);

HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);

}

return FALSE;

}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)

{

SetDlgItemText(hwnd,IDC_EDIT1,"请输入文件所在目录");

SetDlgItemText(hwnd,IDC_EDIT2,TEXT("请输入待剔除的字串"));

return TRUE;

}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)

{

switch(id)

{

case IDC_OK1:

GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));

MessageBox(hwnd,TEXT(str1),TEXT(">>>>"),MB_OK);

break;

case IDC_OK2:

GetDlgItemText(hwnd,IDC_EDIT2,s,sizeof(s));

Slen=strlen(s);

MessageBox(hwnd,TEXT(s),TEXT(">>>>"),MB_OK);

break;

case IDC_BUTTON:

dirsearch(str1);

break;

default:

break;

}

}

void Main_OnClose(HWND hwnd)

{

EndDialog(hwnd, 0);

}

/////////////////////////////

void myRen2(char *file)

{

char *Ps;

char dir[260],oldname[260],newname[260],firstname[260];

int j=0,k=0;

strcpy(firstname,file);

dir_fname(file,dir,oldname);

Ps=strrstr(oldname,s);

if(Ps==NULL)

return;

while(k!=Slen)

k++;

while(*(Ps+k)!='\\0')

*(Ps+j++)=*(Ps+k++);

*(Ps+j)='\\0';

strcpy(newname,dir);

strcat(newname,oldname);

rename(firstname,newname);

return;

}

void dir_fname(const char *filepath,char *dir,char *fname)

{

char *p;

char n=0;

p=strrchr(filepath,'\\\\');

if(!p)

return;

while(1)

{

if(*(p+1+n)=='\\0')

break;

*(fname+n)=*(p+1+n);

n++;

}

*(fname+n)='\\0';

n=0;

while(1)

{

if((filepath+n)>p)

break;

*(dir+n)=*(filepath+n);

n++;

}

*(dir+n)='\\0';

}

/*自定字符串定位函数*/

char *strrstr(char *file,const char *str)

{

int j;

char *p,*np=NULL,*fp=file;

for(j=0;*(file+j)!='\\0';j++)

{

p=strstr(fp,str);

if(p!=NULL){

np=p;

fp=p+1;

}

}

return np;

}

/**********遍历模块***************/

void dirsearch(const char *path)

{

char dirfind[MAX_PATH];//遍历路径

char ffind[MAX_PATH];//发现路径

struct _finddata_t fileinfo;

long handle;

strcpy(dirfind,path);

strcat(dirfind,"\\\\*");

handle=_findfirst(dirfind,&fileinfo);

if(handle==-1)return;

do{

if(fileinfo.attrib&_A_SUBDIR){

if(fileinfo.name[0]!='.'){

strcpy(dirfind,path);

strcat(dirfind,"\\\\");

strcat(dirfind,fileinfo.name);

dirsearch(dirfind);

}

}

else{

strcpy(ffind,path);

strcat(ffind,"\\\\");

strcat(ffind,fileinfo.name);

myRen2(ffind);//调用改名myRen2函数

}

}while(_findnext(handle,&fileinfo)==0);

_findclose(handle);

}

//部分代码以及实例用法截图

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6300.html

C语言的递归原理,尾递归,递归的优缺点,以及三个经典案例

C\\C++语言5|控制台和文件的输入、输出

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部