ВК
Влад Кравченко

Строки в С допустим дана строка char str[]="Hello" как к этой строке добавить символ '!' чтобы получилось "Hello!"

НА
Наталья Агеева

Строка - сплошной блок байт в памяти. (и массив тоже) . Попытаться изменить размер блока можно только тогда, когда он был выделен через malloc/calloc. Поэтому в Вашем случае можно только явно копию строки делать, как писал Булат

ЗЫ. А насчет C++ в комментариях - не Ваша цель сейчас. Цель на ближайшее будущее - понять работу с указателями. Булат написал "как", я пострался объяснить "почему именно так"

Антон
Антон

1) Выделить буфер в памяти достаточного объема,
2) Скопировать вашу строку "Hello" (strcpy),
3) Добавить в конец восклицательный знакт (strcat)

Елена Коннова
Елена Коннова

Взять C++ и воспользоваться классом std::string с его методом append().
Вряд ли же вы пишете прошивку МК, где непременно нужен именно Си.
Под виндой, линуксом с тем же успехом можно писать и на С++.

Или это прихоть вашего препода? Пусть препод вам учебники нужные выдаст, или методички - там в них должны быть описаны соотв. функции.

А вообще, надо было еще до вуза/колледжа самообразованием заниматься - учат то там вон как.

Екатерина
Екатерина

string str = "Hello";
str = str + "!";

Татьяна Роман
Татьяна Роман

Вообще-то это не строка, а массив символов (char[]). Массивы могут иметь динамический размер, а могут и определенный (всегда) , поэтому добавить туда элемент невозможно. Создается новый массив, размер больший на 1, и передаются в него значения:
char str[] = "Hello!";
char newstr[] = str + '!';
А в строках и динамических массивах все проще, там просто с помощью оператора '+=' добавляется символ: str += '!';

Ир
Ирина

> string str = "Hello";
> char newstr[] = str + '!';
> str += '!';
Это вы о чем таком рассказываете? Ни в чистом Си, ни в С++ оператор + для строк не работает.
Тем более нет в чистом Си класса string.

yu
yuliyafedoseenko

Господа, о чем спор? Сама постановка вопроса некорректна. Но если исходить из того что, str это таки массив char[] а не строка, то в C# вот так все прекрасно работает:

Похожие вопросы
Как в java элементу k в строке str (типа String) присвоить значение? В C++ например так и делалось str[j]=variable;
Помогите удалить символы в строке!
как добавить запись в конец строки. Perl. нужно добавить символы в конец строки. как сделать без создания нового файла?
Работаю в Delphi. Есть строка из двух символов. Нужно каждый символ записать в два char-а. Как это сделать?
как в с++ символ дописать к строке? как в с++ символ дописать к строке?
int func(double* arr, int length);int func(char* str);Функція func переста
как в Lua разделить строку на символы
как удалить символ со строки в программе паскаль? мне нужно из слова programm удалить символы чтобы получилось pramm
Дана строка символов. Определить длину строки. Если длина строки <=20, то найти в строке порядковый номер символа *
Преобразование строк символов в Delphi