2014-10-26 2 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)».

Я до сих пор не добирался до значения ошибки.

Любая помощь была бы принята с благодарностью! Cheers

+2

'fgets()' хранит ENTER. Вы, вероятно, должны избавиться от него, с чем-то вроде 'start [strlen (start) - 1] = 0;'. Но это не похоже на поломку. – pmg

+0

Оо хорошо! Приветствия – user2070229

+3

Добро пожаловать в Windows. Вы уверены, что '\ W',' \ S', '\ o',' \ i' и '\ b' являются действительными [C escape-последовательностями] (http://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences), и вам нужны эти специальные символы в имени файла? Если нет, вы, вероятно, захотите удвоить эти обратные косые черты. –

ответ

1

Две проблемы. Вы не объявили dest как массив, и вам нужно поместить double \\ в литеральную строку, чтобы предотвратить \ использование в качестве escape-символа.

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

Сделал \\, и изменил его на массив, но он все равно сработает. – user2070229

+0

Это потому, что вы не взяли на борт комментарий @ pmg. Без этого мой тест не потерпел крушение, но он не удался. –

+0

Сбой, что «все приложение»? Как вы крашете «половину приложения»? Что вы подразумеваете под «сбоями»? Вы изолировали эту проблему до тривиальной программы? –

Смежные вопросы