int path_directory (char *path) {
struct stat s_buf;
if (stat(path, &s_buf))
return 0;
return S_ISDIR(s_buf.st_mode);
}
void Cmd_delt (char* path[]) {
DIR* dp;
struct dirent* ep;
char *p_buf[2048] = {0};
dp = opendir(path[0]);
while ((ep = readdir(dp)) != NULL) {
sprintf(*p_buf,"%s/%s", path[0], ep->d_name);
if (path_directory(*p_buf))
{
Cmd_delt(p_buf);
}
else
unlink(*p_buf);
}
closedir(dp);
remove(path[0]);
}
答案 0 :(得分:1)
您不希望有一组指向char
的指针来存储sprintf
的结果,您需要一个字符串空间(char
&#39}的数组。 s就够了):
char *p_buf[2048] = {0};
应该是
char p_buf[2048] = {0};
和
sprintf(*p_buf,"%s/%s", path[0], ep->d_name);
应该是
sprintf(p_buf,"%s/%s", path[0], ep->d_name);
相同
void Cmd_delt (char* path[]) {
你的path
应该是一个字符串(不是一个字符串数组)
更改为:
void Cmd_delt (char *path) {
并使用path
代替path[0]
。