![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Я написал код:
Вопрос 1: почему функция strlen() работает, несмотря на то, что файл <string.h>, в котором она описана, не подключен? Вопрос 2: почему переменной str нельзя присвоить больше 1 символа (в коде это в цикле for в инструкции if)? Как сделать, чтобы можно было присвоить больше? |
|||
|
||||
| ManiaK |
|
||||||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
Переменная str является символьным массивом. "Больше одного символа" - так же символьный массив. Прямое присвоение массива массиву в Си++ не разрешается. Подробнее по строкам: http://forum.vingrad.ru/index.php?act=modu...dule=vingradfaq
Вероятно этот файл подключается в одном из этих:
|
||||||
|
|||||||
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Я об этом спрашивал. |
||||
|
|||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
"123456" - является массивом. str[i] - одиночный символ в массиве str.
Как по-вашему, можно записать в один байт шесть байтов? Думаю, неплохо было бы вам сначала литературу по Си++ почитать. Мы не учим языку программирования, мы учим технике программирования и помогаем решать задачи. |
|||
|
||||
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
А как же тогда делать? P.S. Если вы меня будете отсылать в FAQ, то про FAQ я уже писал в теме "Указатели". Оно у меня не работает, поэтому и прошу помощи в форуме.
А у меня есть учебник. Даже два. Только там объяснено так, как я не понимаю. И примеров нет. Это сообщение отредактировал(а) sim7 - 2.8.2005, 16:56 |
||||
|
|||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
Это не сделать никак. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Жаль. Ладно, закрывайте тему.
Это сообщение отредактировал(а) sim7 - 2.8.2005, 17:09 |
|||
|
||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 2 Всего: 6 |
Используй функции для работы со строками - например srtcpy Читать Дейтела! -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| codelord |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 1 Всего: 39 |
так устроит:
|
||||
|
|||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
codelord
ну что за дикий пример? Ведь человек правда будет думать, что строку в строку только через prinf засунуть можно... sim7 В данном случае сойдет strcpy(str,"123456"). Соответственно, если тебе нужно засунуть 123456 в конкретное место строки, пиши strcpy(&str[pos],"123456"). Только позаботься о том, чтобы места в строке было достаточно А вот этот твой код:
просто ужасен! На каждой итерации программа вычисляем размер строки, и делаеn она это, просматривая все символы строки, пока не доберется до 0-го символа. Каждый раз! Лучше так:
-------------------- ... |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Ой...
|
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
sim7
Ну, поехали построчно...
p - это своеобразный счетчик цикла, он будет бежать вдоль строки, поочередно указывая на ее элементы (символы, char). *p != 0 означает, что цикл будет выполняться, пока элемент, на который указывает p, не будет равным 0 (ты, наверное уже знаешь, что строки в Си оканчиваются нулевым символом). ++p - инкремент, на каждом шаге цикла к p будет прибавляться 1, и он будет указывать на следующий символ в строке.
Ну теперь, удумаю, понятно. Если текущий символ (на который указывает p) - это 's', то заменяем его (символ) на '1' и прибавляем к h единицу. p - это адрес в памяти. *p - это то, что находится по этому адресу. Если нужно, постараюсь еще подробнее. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Здорово! Вот так бы все объясняли. Все стало предельно ясно. Спасибо огромное, void. А также спасибо Earnest за код. От меня обоим + в репутацию.
P.S. Void, если что, я надеюсь, вы мне поможете еще раз. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |