Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавление символа к строке 
V
    Опции темы
Igor_K
Дата 21.3.2009, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Здравствуйте!

Как можно добавить один символ к строке, если не указывать явно индекс. То есть не так: str[10] = 'A';

Так не работает:
Код

char a[] = "Test string";
char b[10];
strcat(b, a[5]);

пишет:
Cannot convert 'int' to 'const char *'

Но это понятно, не тот тип данных. 

Это нужно мне сделать много раз в цикле и в каждой итерации делать itoa. И то я с itoa не проверял. Подскажите как можно добавить символ просто?
PM MAIL   Вверх
mes
Дата 21.3.2009, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Igor_K @  21.3.2009,  22:17 Найти цитируемый пост)
Как можно добавить один символ к строке, если не указывать явно индекс. То есть не так: str[10] = 'A';

т.е как добавить символ к концу строки ? превратить символ в строку и добавить то что получилось smile

судя по коду, надо к концу строки прибавить, один символ из другой строки,
тогда так : http://cplusplus.com/reference/clibrary/cstring/strncat.html


--------------------
PM MAIL WWW   Вверх
586
Дата 22.3.2009, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 8
Всего: 146



Код
char* strchrcat(char *s, char ch)
{
    int len = strlen(s);
    s[len] = ch;
    s[len+1] = '\0';

    return s;
}


Добавлено через 6 минут и 33 секунды
или, как mes предлагает:
Код
char a[] = "Test string";
char b[10];
//...
strncat(b, &a[5], 1);

PM   Вверх
Igor_K
Дата 22.3.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



586, 
mes, 
Спасибо вам большое за помощь!
 smile 
PM MAIL   Вверх
Dmi3ev
Дата 22.3.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



586, в данном конкретном случае в b нет ничего поэтому функция будет работать аналогично strncat
Код

char* strchrcat(char *s, char ch)
{
    int len = strlen(s);
    s[len] = ch;
    s[len+1] = '\0';
    return s;
}

такое проканает, только, если в b уже что-то будет записано, поэтому:
юзайте вариант mes-а или делайте функцию более мощной... 

Это сообщение отредактировал(а) Dmi3ev - 22.3.2009, 19:19


--------------------

PM MAIL   Вверх
mes
Дата 22.3.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dmi3ev @  22.3.2009,  13:22 Найти цитируемый пост)
будет работать неправильно...такое проканает, только, если в b уже что-то будет записано, поэтому:

почему , что мешает добавить символ к пустой строке ? (если Вы о том что b не обнулен, так в этом случае никакой способ работать правильно не будет)



--------------------
PM MAIL WWW   Вверх
586
Дата 22.3.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 8
Всего: 146



Dmi3ev, а что, по твоему, функции strncat и strcat будут работать правильно с неинициализированными строками?  o_O

Это сообщение отредактировал(а) 586 - 22.3.2009, 17:14
PM   Вверх
Dmi3ev
Дата 22.3.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

Dmi3ev, а что, по твоему, функции strncat и strcat будут работать правильно с неинициализированными строками? 

586, 
Нет я про то, что ты, может, подразумевал какие-либо преимущества в твоем коде...
А если их нет, то зачем придумывать, если есть готовое...
Вот о чем я толковал...  smile

Добавлено через 1 минуту и 13 секунд
Толковал...  smile 
ухаха, лол...
что-то я намедни слишком культурен... аль оказия какая вышла, аль мигрень у меня  smile 


--------------------

PM MAIL   Вверх
586
Дата 22.3.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 8
Всего: 146



Цитата(Dmi3ev @  22.3.2009,  17:21 Найти цитируемый пост)
Нет я про то, что ты, может, подразумевал какие-либо преимущества в твоем коде...
А если их нет, то зачем придумывать, если есть готовое...

Однако, это не означает, что я написал не правильно функцию.
PM   Вверх
Dmi3ev
Дата 22.3.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

Однако, это не означает, что я написал не правильно функцию. 

ок, извини, если сильно тебя задел... стер про "неправильно"...


--------------------

PM MAIL   Вверх
mes
Дата 22.3.2009, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dmi3ev @  22.3.2009,  18:18 Найти цитируемый пост)
стер про "неправильно"... 

имхо, что там осталось тоже желательно подправить :
Цитата(Dmi3ev @  22.3.2009,  13:22 Найти цитируемый пост)
если в b уже что-то будет записано, поэтому:
юзайте 

получается что
Цитата(586 @  22.3.2009,  16:10 Найти цитируемый пост)
функции strncat и strcat будут работать правильно с неинициализированными строками  

smile

 smile 
Цитата(Dmi3ev @  22.3.2009,  18:18 Найти цитируемый пост)
ок, извини, если сильно тебя задел..

а если слабо задел ?!  smile 



--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 22.3.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



mes, опять... Вот, дотошный...


--------------------

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0726 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.