![]() |
|
Модераторы: bsa |
![]()
|
|
| RomanK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: нет Всего: 2 |
Я новичек в С++. Ни как не получается сделать одну вещь и не понимаю почему происходит не то, что я хочу. Я хочу только лишь получить строку, которая будет состоять из уже существующей строки, плюс еще что-нибудь!
Вобщем есть код:
Вобщем по моей логике после этого кода в строке str1 должно оставаться "AB", а в строке str2 должно появится ABCDE. Но нихрена подобного. Почему-то из строки str1 исчезает AB! Помогите пожалуйста. Это сообщение отредактировал(а) RomanK - 25.8.2011, 17:13 |
|||
|
||||
| hils |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.4.2011 Репутация: нет Всего: нет |
str1[2] = 0;
ты ноль зачем char'у присваиваешь? Конечно можно, но не ясна логика. Если же ты хотел закончить строку, то тебе нужно использовать '\0'. |
|||
|
||||
| RomanK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: нет Всего: 2 |
hils, да я хотел строку закончить.
В этом ошибка???? Счас попробую.... Добавлено через 2 минуты и 59 секунд hils, неа. Не в этом дело. Все равно исчезает! Я сейчас заметил, что исчезает значение из str1, когда делаешь вот это:
То есть когда делаешь первое копирование - все ок! Но при чем тут эта строка и str1? Значит проблема в адресах и т.п. В этом я вобще ньюб. Помогите пожалуйста, как сделать так, чтобы работало как я хочу! |
|||
|
||||
| rodnover |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: 2 Всего: 10 |
Это одно и то же. А случайно не юникодовая кодировка используется? Если не сложно кинь значения переменных, которые после конкантенации получаются. И попробовать вот так:
Это сообщение отредактировал(а) rodnover - 25.8.2011, 18:17 |
||||
|
|||||
| hils |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.4.2011 Репутация: нет Всего: нет |
На будущее всегда заканчивай строку управляющей символьно константой '\0', тогда строка будет считаться завершенной.
на выходе строка str2 в которой "ABCDE" и str1 в которой "AB" |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Добавлено через 1 минуту и 56 секунд
описанная ошибка не соответсвует приведенному фрагменту кода.. |
||||
|
|||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
| RomanK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 25.6.2005 Где: Россия, Выборг Репутация: нет Всего: 2 |
Всем большое спасибо. Разобрался со своей ошибкой.
В реальном таком коде (для моего случая) я ошибся в этой строке: char str2[12]; Копируемая строка в эту переменную была больше чем 12 симоволов... Добавлено через 3 минуты и 40 секунд volatile, в С++ программировать только начинаю, и исходный пример был именно с TEXT('A'). Сам не понимаю нахрена этот TEXT нужен. У себя его убрал. Спасибо. По мере программирования своей задачи удивило, что конструкция типа:
Работает! |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Чем же? Тем, что с символами идет работа так же, как и с числами? Ну так символы это и есть числа. Просто на экран они выводятся особым образом. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
макрос TEXT() задуман мелкомягкими для написания программ, компилируемым одновременно и как юникодные и как не юникодные. в юникодных он превращается: в L"sometext", в неюникодных: "sometext" В вашем случае вы присваиваете техт переменной типа чар. Что в юникодной версии вызовет ошибку компиляции. поэтому смысла здесь в макросе TEXT абсолютно нет. ЗЫ: был бы смысл если бы было:
ну и все функции типа strcpy() заменить на соответствующие _tcscpy() и т.д... (вообще всю программу перепахать изрядно бы пришлось) Но так как этого нет, то и TEXT() не нужен. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |