Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > копирование файлов в Си |
Автор: Гость_opex 25.3.2004, 00:05 | ||
как копировать файл с любым разрешением (на Си ) текстовые файл копируются но в конце появляется символ "я" а допустим ехе не в какую
зарание благодарен |
Автор: Opex 25.3.2004, 00:07 |
может еть какаянибуть библиотечная функция |
Автор: sergejzr 25.3.2004, 02:14 | ||||
Так не пойдёт. Ты ищешь в файле знак EOF (их в .ехе куча может быть ![]() Пользуйся read() write(), чтобы копировать "вслепую". Обязательно посмотри мануалы к этим функциям. Пример (без опросов на существованиe файлов):
PS: Bопросик, кто нить знает, как подцветку кода в сообщениях включать? Добавлено @ 02:16 read() write() НАМНОГО быстрее. Величину buf регулируй по вкусу ![]() |
Автор: NiJazz 25.3.2004, 08:27 |
Если делаешь под Windows, то лучше используй CopyFile. |
Автор: Opex 25.3.2004, 10:51 |
sergej.z большое спасибо но я не понимаю зачем в функции main в списке формальных пораметров сидит int argc или я чтото не догнал. NiJazz а можно по подробнее про CopyFile. |
Автор: OlegsDP 25.3.2004, 12:48 |
The CopyFile function copies an existing file to a new file. BOOL CopyFile( LPCTSTR lpExistingFileName, // pointer to name of an existing file LPCTSTR lpNewFileName, // pointer to filename to copy to BOOL bFailIfExists // flag for operation if file exists ); Parameters lpExistingFileName Points to a null-terminated string that specifies the name of an existing file. lpNewFileName Points to a null-terminated string that specifies the name of the new file. bFailIfExists Specifies how this operation is to proceed if a file of the same name as that specified by lpNewFileName already exists. If this parameter is TRUE and the new file already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds. Return Values If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. Remarks Security attributes for the existing file are not copied to the new file. File attributes (FILE_ATTRIBUTE_*) for the existing file are copied to the new file. For example, if an existing file has the FILE_ATTRIBUTE_READONLY file attribute, a copy created through a call to CopyFile will also have the FILE_ATTRIBUTE_READONLY file attribute. For further information on file attributes, see CreateFile. |
Автор: NiJazz 25.3.2004, 13:15 | ||
lpExistingFileName - Имя текущего файла, который хочешь копировать. Например, C:\\myDir\\MyFile.txt lpNewFileName - куда хочешь его скопировать. Например, C:\\NewDir\\MyNewFile.txt. Можно просто C:\\NewDir\\, если не хочешь менять имени. bFailIfExists - опеределяет, надо ли заменять файл, если такой существует. FALSE - перезаписать. Не забудь сделать #include <windows.h> |
Автор: sergejzr 25.3.2004, 13:47 | ||||
Если вызвать программу с аргументами например: my.exe infile.txt outfile.txt то argc осведомит в main о количестве переданных аргументов, а argv будет содержать эти аргументы. Абсолютно верно, что в моём примере argc не используется. Этот пример был написан на скорую руку(даже fclose() не был вызван). Вообще то надо было бы проверить, сколько аргументов было передано в нашу программу.
PS: CopyFile внутренне работает так же, но с этой функцией у меня две проблемы.
|
Автор: Guest 25.3.2004, 19:24 |
всем большое спамибо |