Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 29.01.2015
Сообщений: 30
1

Копирование файла C++

29.01.2015, 21:30. Показов 3128. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем Доброго вечера, хочу написать программу для копирования настроек браузера с комп на комп.
Все компилируется, но файл не копируется, может кто подсказать в чем проблема?
Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "stdafx.h"
#include <fstream>
#include <iostream>
//#include <cstring>
 
using namespace std;
 
int main(){
 
    char s1[] = "\\123.txt";
    WCHAR f1[22];
 
    char* appdata = getenv("APPDATA");//путь папки
    printf("%s",appdata);
    getchar();
 
 
    strcat(appdata, s1);//склеиваем строки appdata с s1
    printf("%s", appdata);//
    getchar();
 
    //Char приводим к WCHAR
    MultiByteToWideChar(CP_ACP, 0, appdata, 1, f1, 12);//где то здесь проблема
 
    CopyFile(L"123.txt", f1, FALSE);//копирование
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2015, 21:30
Ответы с готовыми решениями:

Копирование файла C++
Привет всем. У меня проблема такого рода, пытаюсь скопировать файл, и все вроде получается, за...

копирование файла
Напишите программу копирования заданного текстового файла в другой текстовый файл с удалением...

Копирование файла
и если есть, как осуществить копирование нетипизированного файла в С++? вот это копирует слово с...

Копирование файла
Делаю программку для копирование файла настроек оперы с\на разные операционые системы. Для...

6
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
29.01.2015, 21:37 2
А откуда эти цифры у тебя (1 и 12)? Там же размеры должны быть. Так попробуй:
C++
1
MultiByteToWideChar(CP_ACP, 0, appdata, -1, f1, 22);
0
0 / 0 / 1
Регистрация: 29.01.2015
Сообщений: 30
29.01.2015, 22:10  [ТС] 3
Цифры взял из примера MultiByteToWideChar, попробовал как у тебя, не работает.
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
29.01.2015, 22:36 4
Мало выделяешь под результирующую строку и appdata менять нельзя. Вот так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main()
{
    char s1[] = "\\123.txt";
    char s2[256];
    WCHAR f1[256];
 
    char* appdata = getenv("APPDATA");//путь папки
    strcpy(s2, appdata);
 
    printf("%s",appdata);
    getchar();
 
 
    strcat(s2, s1);//склеиваем строки appdata с s1
    printf("%s", s2);//
    getchar();
 
    //Char приводим к WCHAR
    MultiByteToWideChar(CP_ACP, 0, s2, -1, f1, 256);//где то здесь проблема
    CopyFile(L"123.txt", f1, FALSE);//копирование
 
    return 0;
}
Добавлено через 1 минуту
Есть функция _wgetenv(), она сразу даёт строку utf-16, незачем перекодировать.
0
0 / 0 / 1
Регистрация: 29.01.2015
Сообщений: 30
29.01.2015, 22:51  [ТС] 5
Да, но как тогда соединить 2 строки appdata и s1 в одну строку, strcat не пройдет.
Попробовал через _wgetenv()
#include "stdafx.h"
#include <fstream>
#include <iostream>
//#include <cstring>

using namespace std;

int main(){

char s1[] = "\\123.txt";
WCHAR f1[22];

wchar_t* appdata = _wgetenv("APPDATA");//путь папки
printf("%s",appdata);
getchar();


strcat(appdata, s1);//склеиваем строки appdata с s1
printf("%s", appdata);//
getchar();

//Char приводим к WCHAR
// MultiByteToWideChar(CP_ACP, 0, appdata, -1, f1, 22);//где то здесь проблема

CopyFile(L"123.txt", f1, FALSE);//копирование

return 0;
}
ругается на аргумент функции _wgetenv() const char* не совместим с const wchar_t*
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
29.01.2015, 23:11 6
Лучший ответ Сообщение было отмечено Semen11 как решение

Решение

Я же тебе написал, что к appdata ничего прикреплять нельзя, читай описание функции. Вот с широкими строками:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main()
{
    WCHAR s1[] = L"\\123.txt";
    WCHAR s2[256];
 
 
    WCHAR* appdata = _wgetenv(L"APPDATA");//путь папки
    wcscpy(s2, appdata);
 
    wprintf(L"%s",appdata);
    getchar();
 
 
    wcscat(s2, s1);//склеиваем строки
    wprintf(L"%s", s2);//
    getchar();
 
    //Char приводим к WCHAR
    //MultiByteToWideChar(CP_ACP, 0, s2, -1, f1, 256);//где то здесь проблема
    CopyFile(L"123.txt", s2, FALSE);//копирование
 
    return 0;
}
1
0 / 0 / 1
Регистрация: 29.01.2015
Сообщений: 30
29.01.2015, 23:17  [ТС] 7
Спасибо, все работает
0
29.01.2015, 23:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2015, 23:17
Помогаю со студенческими работами здесь

копирование файла
недавно изучаю С++, собственно столкнулся с проблемой при копировании из одного файла в другой....

Копирование файла
Задача: Из исходного файла скопировать в новый файл текст таким образом, чтобы все символы,...

Копирование из файла в файл
ПОМОГИТЕ ПОЖАЛУЙСТА! #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; //razmer...

Структуры, копирование файла
Подскажите, как написать программку с меню с пунктами: – посимвольное копирование файла; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru