2012-04-04 3 views
0

Я пытаюсь скопировать файл из одного места в другое место с помощью memcpy.Ошибка при использовании memcpy?

И я получаю сбой каждый раз, когда путь к файлу, который я предоставляю в качестве источника, не существует.

Правильно ли это, если да, то как я могу предотвратить сбой.

+5

Вы делаете это неправильно. Откуда мы знаем, что именно неправильно? Вы должны были предоставить свой исходный код. Кстати это домашнее задание? –

+0

Пожалуйста, укажите [короткий пример] (http://sscce.org). И я считаю, что вы используете 'memcpy' совершенно неправильно. – Zeta

ответ

8

memcpy Целью является не копирование файлов, а фрагменты памяти из одного места в другое. В зависимости от платформы, я уверен, что есть лучшие способы скопировать файлы между каталогами.

2

Нет, нет, нет! Что во имя святой памяти вы делаете? memcpy строго используется для передачи памяти. Например, скажем, у вас есть куча вершин в графическом приложении, которое вы хотите передать в буфер вершин, не передавая указатель. Таким образом, вы копируете весь массив байтов, которые представляют ваши вершины и после этого, - это проблема базового API. Это предполагаемое использование. Кроме того, будьте осторожны, как вы его используете. Вы указываете количество байтов, которые нужно скопировать. Убедитесь, что это точно. На самых низких уровнях нет таких типов, как типы, если вы его слишком много нанесете, это приведет к хаосу в байтах, которые «принадлежат» другим переменным. Если вам повезет, такой код убьет ваше приложение. Если вы этого не сделаете - он продолжит работу.

Для чтения/записи/копирования файлов вам необходимо проконсультироваться со стандартным вводом/выводом файлов C/C++ (или некоторыми более изысканными методами, которые дают базовую платформу, как один из предложенных ответов). В Интернете много ресурсов, поэтому я не буду изобретать велосипед здесь. Надеюсь, это дало вам лучшее представление о том, для чего стоит memcpy.

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