2014-10-26 67 views
0

我需要將文件從輸入移動到某個文件夾,但是「重命名」會使整個應用程序崩潰。如何移動文件C

char start[50]; 
const char dest = "C:\Windows\System32\oobe\info\backgrounds\supertemp.JPG"; 

printf("Please enter file to move \n"); 
fgets(start, sizeof(start), stdin); 

if (rename(start, dest) == 0){ 
    printf("Success \n"); 
} 

else{ 
    printf("Failed %s ", GetLastError()); 
} 

它總是在'if(rename(start,dest)== 0)'崩潰。

我沒有得到任何檢索錯誤值。

任何幫助將不勝感激!歡呼聲

+2

'fgets()'保持ENTER。你可能應該刪除它,像'start [strlen(start) - 1] = 0;'。但是這看起來不是碰撞的原因。 – pmg 2014-10-26 21:11:40

+0

哦好點!歡呼聲 – user2070229 2014-10-26 21:19:22

+3

歡迎來到Windows。你確定'\ W','\ S','\ o','\ i'和'\ b'都是有效的[C轉義序列](http://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences),並且在文件名中需要這些特殊字符?如果不是的話,你可能想要加倍反斜槓。 – 2014-10-26 21:28:10

回答

1

兩個問題。您還沒有將dest聲明爲數組,並且您需要在文字字符串中放置一個\\ \ \,以防止\被用作轉義字符。

const char dest[] = "C:\\Windows\\System32\\oobe\\info\\backgrounds\\supertemp.JPG"; 
+0

完成了\\,並將其更改爲一個數組 - 但它仍然崩潰。 – user2070229 2014-10-26 21:51:01

+0

這是因爲你還沒有登上@ pmg的評論。沒有它,我的測試沒有崩潰,但失敗了。 – 2014-10-26 23:00:56

+0

崩潰什麼「整個應用程序」?你如何崩潰「一半申請」? 「崩潰」是什麼意思?你是否將這個問題分解爲一個簡單的程序? – 2014-10-26 23:07:51