質問はすでに回答されていることは知っていますが、これに対する別のアプローチを共有したかったのですが、コメントするには冗長すぎます:)
短い例:
#include <cstdio>
#include <cstdlib>
int main()
{
char x[] = "yourdirectory";
/* len will contain the length of the string that would have been printed by snprintf */
int len = snprintf(0, 0, "mkdir %s", x);
/* casting the result of calloc to (char*) because we are in C++ */
char *buf = (char*)calloc(len + 1, sizeof(char));
/* fail if the allocation failed */
if(!buf)
return -1;
/* copy to buffer */
snprintf(buf, len + 1, "mkdir %s", x);
/* system is evil :( */
system(buf);
return 0;
}
snprintf は出力される文字数を返すため、長さ 0 を指定すると、コマンドに割り当てなければならないバッファの大きさがわかります。
このコードは、ユーザーが指定した任意のディレクトリでも動作し、バッファ オーバーランによる入力の切り捨てに悩まされることはありません。
気をつけて :)
編集:もちろん、システムは依然として悪であり、「実際の」コードでは決して使用しないでください;)