用C語言寫個創建資料夾的問題

2014-10-04 7:13 am
我想用C語言來創建一些資料夾

我想創建 0\0\0\0 到 5\5\5\5
例如 D:\TEST\0\0\0\0 ~ D:\TEST\5\5\5\5

但不知道怎麼寫,有好心的大大能為我解答嗎?
更新1:

prisoner26535 大大 可是我照你的打了之後執行他寫 命令語法不正確 爾且我看程式碼好像只執行了6次

更新2:

所以妳是說 #include #include #include int mk(char * name, int l, int c){ int i; if(0>l) return 1; for(i=c;i>=0;--i){ char n0[64]; sprintf(n0, "%s%d/",name,i); if(0 == system(n0)) mk(n0,l-1,c); } } int main(int x, char *y[]) { mk("mkdir " "d:\test\"

更新3:

抱歉 因為我還不太會用知識家 所以沒有看到建議 我的作業系統是 WIN7 然後我照你說的把 mk("mkdir " "d:/test/",3,5); 改成 mk("mkdir " "d:\test\",3,5); 之後下面就顯示 missing terminating "character 不知道我是哪裡打錯了呢?

更新4:

不好意思 威遠大 我打你程式碼結果只有 0\0\0\0 1\1\1\1 2\2\2\2 3\3\3\3 4\4\4\4 5\5\5\5 我要的是 0000~5555阿 你懂我意思嗎? P大 我照你說的把 / 都改成 \ 之後還是沒有辦法執行喔

回答 (4)

2014-10-04 1:14 pm
✔ 最佳答案

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int mk(char * name, int l, int c){
int i;
if(0>l) return 1;
for(i=c;i>=0;--i){
char n0[64];
sprintf(n0, "%s%d/",name,i);
if(0 == system(n0)) mk(n0,l-1,c);
}
}
int main(int x, char *y[]) {
mk("mkdir " "d:/test/",3,5);
return 0;
}

2014-10-04 23:53:35 補充:
妳好像很愛捉迷藏耶! 我在UBUNTU上直行的好啊.
> 命令語法不正確
妳也說說是哪裡不正確啊!
> 爾且我看程式碼好像只執行了6次
妳也說說是妳是怎麼看出來的啊!

2014-10-04 23:57:41 補充:
有一點:
在Linux 妳可以用 "mkdir /tmp/test/..."
在Windows妳可以用 "mkdir c:\tmp\x\..."

妳的程式要照妳的OS來調整的!

2014-10-04 23:59:50 補充:
> 只執行了6次
我想是因為 (0 == system(n0)) 每次都失敗 就是因為 / 與 \的差別

2014-10-06 00:08:21 補充:
1.你還是不肯說你是用神OS 誰有你的辦法呀?
2.就算妳為了不明原因 要把右斜換成左斜 你也沒有換乾淨

2014-10-06 00:26:10 補充:
3. 還有 一點: 每個城市 都有他的 "預設狀態" 才能跑.例如說 這一題 若是 "d:" "d:\\" 或是 "d"\\test\\" 不存在的話 這城市當然也不能跑!!

若是版大 有白目到這一個程度的話 真的應該考慮改行吧

2014-10-13 08:30:12 補充:
妳沒有看到sprintf括號裡面的那個 / 嗎?

2014-10-18 03:58:43 補充:
For Windows, you only need to change 2 lines:

sprintf(n0, "%s%d\\",name,i);
mk("mkdir " "d:\\test\\",3,5);

2014-10-18 03:59:36 補充:
But before you run the program, delete everything in d:\\test\\
2014-10-16 7:41 pm
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
int main(void)
{
for(int i=0;i<6;i++)
{
char ctemp[1000];
string stemp="MD D:\\TEST";
for(int j=0;j<4;j++)
{
stemp+="\\";
stemp+=i+'0';
}
strcpy(ctemp, stemp.c_str());
system(ctemp);
}
system("pause");
}


好奇一問 你是要用在甚麼上面?
需要註解在跟我說
2014-10-04 3:59 pm
這里很不錯999shopping。com老婆很喜歡
住凗劢倛咰
2014-10-04 8:05 am
最簡單的方法:
system("mkdir D:\\0\\0\\0\\0");

稍微複雜一點的:
#include < windows.h >
CreateDirectory("D:\\0\\0\\0\\0", NULL);

2014-10-07 13:21:04 補充:
我一看版主的需求裡出現 d: 我就想一定是 Windows,所以後面就沒有再多敘述 OS 的種類了。
另外,我的確打上了雙反斜線,只是不知為何 Yahoo 貼上後變成只有一個。後來懶得改了,就像你說的,版主不能看除來的話,我也不知要如何補充下去(其實是要補充太多東西)。

2014-10-07 13:23:37 補充:
他不說他用的 OS 是什麼,除了故意不告訴你外,很有可能是他自己根本不知到什麼是 OS,甚至不知道他自己用的叫作 Windows,甚至不知道電腦居然需要 OS 才能運作。以上都不誇張,是我真正遇到過的按例,有一些甚至是我小時候的理解。

2014-10-18 21:03:17 補充:
都已經提示到這種地步了還不能做出來喔,版主到底有沒有看懂兩位大大表達的事情?還是只想等著人把完整直接可用的程式碼寫出來交給你?你是不會自己融會貫通一下嗎?至少字串會自己處理吧?


收錄日期: 2021-05-04 02:03:40
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20141003000010KK04896

檢視 Wayback Machine 備份