Форум города Горишни Плавни (Комсомольск)
http://forum.km.pl.ua/

Вопрос С++
http://forum.km.pl.ua/viewtopic.php?f=39&t=9414
Страница 1 из 1

Автор:  geniy [ 15.11.09, 13:48 ]
Заголовок сообщения:  Вопрос С++

Если у меня есть
Код:
С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';


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

Автор:  FallenAngel [ 29.12.09, 16:51 ]
Заголовок сообщения:  Re: Вопрос С++

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

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

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/