[英]_mkdir strange behaviour c++
我正在努力解決一個奇怪的問題。 我想為程序的解決方案創建一個文件夾,並編寫了以下代碼:
timer = time(NULL);
path.assign(".\\Solution_");
path.append(ctime(&timer));
ch1 = ':';
ch2 = '_';
for (i = 0; i < path.length(); ++i) {
if (path[i] == ch1 || path[i] == ' ')
path[i] = ch2;
}
mkdir(path.c_str());
即使path等於“ 。\\ Solution_Thu_Jun_12_10_10_31_2014 ”並且我輸入,它也不會創建任何東西
mkdir(".\\test");
它可以正常工作。 我進行了許多測試,我力所能及,但我無法弄清楚出了什么問題。 誰能幫我嗎? 最好,羅伯托
詳細信息:即使我使用mkdir(path.c_str());
路徑等於“ Solution_Thu_Jun_12_11_52_04_2014”(不帶任何\\),則無論如何都不起作用,而在另一側'mkdir(“ test”);' 作品。
解決方案 :好的,有一個隱藏的換行符。 謝謝大家的幫助:-)!!!
您遇到的問題是反斜杠字符是轉義序列的開始。 這些用於在流中輸入不可打印的字符(制表符,回車符等)。
因此,您的程序正在看到一個反斜杠,並期望下一個字符將成為命令字符。 如果看到另一個反斜杠,則表明您想要一個反斜杠而不是轉義序列,因此為什么\\\\有效而\\無效。
由於運行的是Windows,因此可以使用CreateDirectory函數。
同樣,您作為示例輸入的是C,而不是C ++。 您從什么來源學習?
檢查Windows中文件名是否包含換行符或其他任何非法字符。 您的錯誤看起來像那樣。
Windows不允許這些字符<>?/\\| or newline
<>?/\\| or newline
文件名中的<>?/\\| or newline
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.