Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Двигаем массив


Автор: sOckets 22.9.2006, 22:36
Помогите , у меня не хватает мозгов. 
Есть массив :

Код

char M[100];
strcpy(M,"C:\PROGRAM FILES\VINGRAD\SOURCES\KERNEL\CORE\CONFIG.INI");


так вот как мне написать цикл чтобы зделать :

Код

"C:\\PROGRAM FILES\\VINGRAD\\SOURCES\\KERNEL\\CORE\\CONFIG.INI");


уже замучался smile smile 

Автор: Kuvaldis 22.9.2006, 23:14
sOckets, 
Похоже, что не получится, так как одинарный символ '\' в любом месте программы воспринимается как разрыв строки ( в макросах часто его применяют, так как позволяет реализовать макрос не в одной строке (как это положено), а в нескольких). Данный символ даже не определяется.

2-й вариант - попробовать AnsiString 

P.S. Я не совсем понял, зачем это тебе надо. Например, в таком операторе получения адреса папки (программы) 
Код

strcpy(dest,argv[0]);    // адрес выполняющейся программы

автоматически появляется двойной слэш. smile

Автор: Damarus 22.9.2006, 23:25
Цитата(sOckets @  22.9.2006,  23:36 Найти цитируемый пост)
char M[100];strcpy(M,"C:\PROGRAM FILES\VINGRAD\SOURCES\KERNEL\CORE\CONFIG.INI");

Наверное так должно быть:
Код
char M[100];
strcpy(M,"C:\\PROGRAM FILES\\VINGRAD\\SOURCES\\KERNEL\\CORE\\CONFIG.INI");


Добавлено @ 23:29 
Цитата(Kuvaldis @  23.9.2006,  00:14 Найти цитируемый пост)
Данный символ даже не определяется.

Символ "\" в C обозначается так: '\\'.

Цитата(Kuvaldis @  23.9.2006,  00:14 Найти цитируемый пост)
автоматически появляется двойной слэш.

Ерунда. Слэш будет одинарным.

Автор: Kuvaldis 22.9.2006, 23:34
Damarus, 
Цитата

автоматически появляется двойной слэш.
Ерунда. Слэш будет одинарным.

Я к тому, что в отладчике будет виден двойной слэш. smile 

Да и вообще, не совсем понятно, что автор топика хотел сделать

Автор: maxim1000 23.9.2006, 00:36
может, что-то типа этого?
Код

void Extend(const char *source,char *target)
{
  while(*source)
  {
    *target++=*source;
    if(*source=='\\')
      *target++='\\';
    ++source;
  }
  *target=0;
}

(ну и, конечно, всякие проверки добавить)

Автор: EvgenZ 23.9.2006, 00:59
может уже поздно и ничего не понимаю, но const в void Extend(const char *source,char *target) нужен? Это компилируется?  

Автор: maxim1000 23.9.2006, 01:46
Цитата(EvgenZ @  22.9.2006,  23:59 Найти цитируемый пост)
const в void Extend(const char *source,char *target) нужен? Это компилируется?

можно и убрать
это - привычка ставить const везде, где он не мешает
например, если случайно написать *source=*target, компилятор заметит и сообщит
скомпилироваться в C++, по идее, должно, хотя не пробовал (это - всего лишь набросок)
в C const надо убрать

Добавлено @ 01:49 
проверил в VC++2005, компилируется и работает...

Автор: EvgenZ 23.9.2006, 09:30
maxim1000, меня переклинило, я почему-то решил, что здесь *source=='\\' присвоение  smile . Ночь... пятница...

Автор: Daevaorn 23.9.2006, 11:46
А можно заюзать простой одинарный "/", т.е. просто заменить символы

Автор: sOckets 23.9.2006, 11:49
Цитата
может, что-то типа этого?


Да ,спасибо помогло.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)