#define MAX_BUFFER 10000
char* getfilename(char* path){ //例: "C:\dir\file.txt" から "file.txt" を返す
int i;for(i = 0; path[i] != '\0'; ++i); if(!i) return 0; for(; i; --i){ if(path[i] == '/' || path[i] == '\\'){++i; return &path[i];} } return &path[0];
}
int Ziping(char* DirName, char* FileName)
{
chdir(DirName);
int ErrorCord = 0;
char* _filename = getfilename(FileName);
int dirlen = _filename - FileName;
char* pstr = strrchr(_filename, '.');
if(!pstr) pstr = strrchr(_filename, '\0');
int filelen = pstr - _filename;
int len = dirlen + filelen + strlen(".zip") + 1;
char* zipFileName = new char [len];
for(int i = 0;i < len;++i){ zipFileName[i] = '\0'; }
strncpy(zipFileName, FileName, dirlen + filelen); strcat(zipFileName, ".zip");
char* _szCmdLine = new char [strlen("\"") + strlen(zipFileName) + strlen("\" \"") + strlen(FileName) + strlen("\"") + 1];
strcpy(_szCmdLine, "\""); strcat(_szCmdLine, zipFileName); strcat(_szCmdLine, "\" \""); strcat(_szCmdLine, FileName); strcat(_szCmdLine, "\"");
char _szOutput[MAX_BUFFER + 1];
ErrorCord = Zip(NULL, _szCmdLine, _szOutput, MAX_BUFFER);
delete [] _szCmdLine; delete [] zipFileName;
return ErrorCord;
}
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
Ziping("C:\\zip\\", lpCmdLine);
}
↑ファイル名に '[' と ']' が入ってると圧縮に失敗するソースなんですが
どこがいけないのですか?