最近温习C语言功课,一直为返回字符串数组问题所困扰,网搜无完整应用信息,不得其法,经过不断实践修改,略有所悟,记录如下:
/* run this program using the console pauser or add your own getch, system("pause") or input loop
program:create_delete_file.cpp
written by adengou
date:2018-05-01
ide:dev c++ 5.11
application:为处理返回字符串数组问题提供参考
*/
#include <iostream>
#include <windows.h>
#include <string>
char **funFilePath(char** arrFilename,int nLength);
int createFile(char *contentTxt,int nLength);int deleteFile(int nLength);
int main(int argc, char** argv) {
char contentTxt[512]="written by adengou";//写入文件的内容
int nLength = 10;//创建10个文件
createFile(contentTxt,nLength);//创建文件
deleteFile(nLength);//删除文件
system("pause");
return 0;
}
//设置批量文件
char **funFilePath(char** arrFilename, int nLength)
{
char Path[255];
char FileName[255];
for(int i=0;i<nLength;i++) {
GetCurrentDirectory(sizeof(Path),Path);
wsprintf(FileName,"\\%d.txt",i);//创建文件名
strcat(Path,FileName);
arrFilename[i]=(char *)malloc(255);/*增开动态内存保存字符串,外部函数读取完毕记得free(arrFilename[i]);释放内存 */
strcpy(arrFilename[i],Path);
}
//printf("%s\n",arrFilename[i]);//test
return arrFilename;
}
//批量创建文件
int createFile(char *contentTxt,int nLength){
//int nLength = 10;
char* arrFilename[nLength];
funFilePath(arrFilename,nLength);
//printf("%d\n",sizeof(arrFilename)/sizeof(char**));//字符串数组个数
for(int i=0;i<sizeof(arrFilename)/sizeof(char**);i++) {
HANDLE hFile;
hFile = CreateFile(arrFilename[i],GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE){
continue;
}
DWORD dwWrite;
WriteFile(hFile,contentTxt,strlen(contentTxt),&dwWrite,NULL);//创建文件并写入内容
printf("%s----创建成功!\n",arrFilename[i]);
CloseHandle(hFile);
free(arrFilename[i]);//释放内存
}
//memset(arrFilename,0x00,255);//清空数组内容
return 0;
}
//批量删除文件
int deleteFile(int nLength){
char* arrFN[nLength];
funFilePath(arrFN,nLength);
//printf("%d\n",sizeof(arrFilename)/sizeof(char**));//字符串数组个数
printf("开始删除文件:\n");
for(int i=0;i<sizeof(arrFN)/sizeof(char**);i++){
if( remove(arrFN[i]) == 0 )
printf(" %s 文件删除成功!\n", arrFN[i]);
else
perror("remove");
free(arrFN[i]);//释放内存
}
//memset(arrFN,0x00,255);//清空数组内容
return 0;
}