Сообщения без ответов | Активные темы Текущее время: 25.04.18, 12:41



Ответить на тему  [ Сообщений: 2 ] 
 Вопрос С++ 
Автор Сообщение
Гигант мысли
Гигант мысли
Аватара пользователя

Зарегистрирован: 20.07.07, 09:13
Сообщения: 293
Если у меня есть
Код:
Сstring fromm="C:\\SOURCE.TXT" и
Сstring too="C:\\DEST.TXT" (строки для хранения пути к файлу)


Код копирования файла в Винде (код взят из интернета и работоспособен (проверено мной)):
Код:
char *From = "C:\\SOURCE.TXT\0";
char *To   = "C:\\DEST.TXT\0";
SHFILEOPSTRUCT op;
ZeroMemory(&op, sizeof(op));
op.wFunc = FO_COPY;
op.pFrom = From;
op.pTo   = To;
op.fFlags= 0;
SHFileOperation( &op);



Вопрос:
Сstring fromm="C:\\SOURCE.TXT" и
Сstring too="C:\\DEST.TXT"
char *From = "C:\\SOURCE.TXT\0";
char *To = "C:\\DEST.TXT\0";

Значения стринговских и чаровских фром и ту, как мы видим, одинаковы (за исключением \0)
1) Что значит эта запись:
Код:
char *From = "C:\\SOURCE.TXT\0";
:?:
Я так понимаю - это чаровский массив. Смущает * (указатель) при обьявлении\определении.
2) "\0" - это один символ, или 2? И нужно ли его добавлять\прописывать в чаровском массиве, если он там по идее должен появтся сам?
3)Каким образом связать стринговскую строку и чаровский массив? После посимвольной перезаписи с помощью кода :
Код:
int ss=fromm.GetLength();
   char *From;
   From=new char[ss];
   char vrem;
   for(int yy=0; yy<ss; yy++)
   {
      vrem=fromm.GetAt(yy);
      *(From+yy)=vrem;
   }
//   *(From+yy+1)='\0';
   ss=too.GetLength();
   char *To;
   To=new char[ss];
   for(yy=0; yy<ss; yy++)
   {
      vrem=too.GetAt(yy);
      *(To+yy)=vrem;
   }
//   *(To+yy+1)='\0';


выдаётся ошибка при попытке скопировать : типо указанного адресса не существует или что-то в этом роде. :(

_________________
Завтра будет лучше !!!

Настоящих буйных мало - вот и нету мужиков...


15.11.09, 13:48
Профиль
Писатель
Писатель
Аватара пользователя

Зарегистрирован: 24.06.07, 20:42
Сообщения: 76
Откуда: Ravencrest EU
Если "типо указанного адресса не существует или что-то в этом роде", значит логично предположить, что что-то не так с указателями(как я понимаю, адрес памяти это число в шестнадцатеричной системе, а ты к нему прибавляешь десятичное). Не легче ли написать вместо
*(From+yy)=vrem;

From[yy]=vrem; и аналогично для второго

_________________
There is no greater sorrow than to recall happiness in times of misery...


29.12.09, 16:51
Профиль ICQ
Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 2 ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  




Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software for PTF.
Русская поддержка phpBB