Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 71, средняя оценка - 4.70
1rop
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 120
#1

сложить char* c char - C++

12.01.2012, 16:21. Просмотров 9845. Ответов 35
Метки нет (Все метки)

подскажите пожалуйста как сложить строку типа char* с символом типа char (например 12 сложить с 3 чтобы получилось 123)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2012, 16:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос сложить char* c char (C++):

Как сложить два char? - C++
Как сложить два char?

Сложить столбиком два числа char - C++
как сложить столбиком 2 числа записанных в char? Объясните кодом

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( - C++
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Ошибка: call of overloaded 'strchr(char&, char)' is ambiguous - C++
Здравствуйте, прога почему-то ругается на функцию strchr, вот кусок кода: #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.01.2012, 16:33 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
 
char *str_add_chr(char *str, char chr)
{
    size_t len = strlen(str);
    
    str[len] = chr;
    str[len + 1] = '\0';
    
    return str;
}
 
int main()
{
    char str[4] = "12";
    char chr = '3';
    
    printf("%s\n", str_add_chr(str, chr));
    
    return 0;
}
Разумеется, входная строка str должна быть способна вместить strlen(str) + 2 символов.
cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
12.01.2012, 16:33 #3
strcat();
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.01.2012, 16:35 #4
cyberobot, только для двух строк.

Добавлено через 41 секунду

Не по теме:

Честно пытался вспомнить стандартную функцию, которая делает подобное, ибо у меня есть стойкое впечатление, что она была... Но так и не вспомнил.

go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.01.2012, 16:35 #5
C
1
2
char s[10] = "12";
strcat (s, "3");
1rop
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 120
12.01.2012, 16:38  [ТС] #6
Спасибо)
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.01.2012, 16:51 #7
Цитата Сообщение от silent_1991 Посмотреть сообщение
только для двух строк.
Ой ли
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string.h>
#include <stdio.h>
 
int main() 
{
   char srcs[4][BUFSIZ] = 
   {
      "abc", "def", "ghi", "jkl"
   };
   
   char dst[BUFSIZ] = "";
   printf("%s\n", strcat(dst, strcat(srcs[0], strcat(srcs[1], strcat(srcs[2], srcs[3])))));
                         
   return 0;
}
silent_1991
12.01.2012, 16:56
  #8

Не по теме:

fasked, мошенство, сударь И формально это меня не опровергает

1rop
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 120
12.01.2012, 17:22  [ТС] #9
silent_1991, только ругается на операцию
C++
1
size_t len = strlen(str);
даже незнаю почему пробовал
C++
1
int len = strlen(str);
все равно пишет "приложение остановлено так как оно получило сигнал от операционной системы
сигнал SIGSEGV
назначение Segmentation fault"
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.01.2012, 17:25 #10
1rop, вы код меняли? Если да, покажите его.
Day
1155 / 960 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
12.01.2012, 17:29 #11
1rop, покажи как ты определил str и что с ней делал. Те. все вхождения str в твой код.
Есть подозренья, что str твое нулем не кончается, и функция strlen, пытаясь определить конец строки, залезает куды не положено.
1rop
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 120
12.01.2012, 17:30  [ТС] #12
вот что я делаю
C++
1
2
3
4
5
6
7
8
9
10
11
chislo=new char*[i];
chislo[i]=new char(0);
//потом
size_t len=strlen(chislo[i]);
char* ch=chislo[i];
delete[] chislo[i];
chislo[i]=new char(len+1);
chislo[i]=ch;
chislo[i][len]=s1;
chislo[i][len+1]='\0';
//и потом при добавлении еще 1о символа только вторая часть выполняется(после слова потом))
входные значения s1 и i
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.01.2012, 17:34 #13
1rop, какое-то мясо...
вы в строке 6 запомнили указатель на chislo[i], а затем, в строке 7, удалили эту память. Теперь как chislo[i], так и ch, указывают на память, которая программе не принадлежит.
В строке 8 вы снова выделяете память для chislo[i], но в строке 9 эта память утекает, потому как вы затираете указатель значением из ch, который указывает на мусорную память. Ну а дальше вы пытаетесь с этой памятью работать, отчего и падает программа.
А теперь внимание, вопрос: вы чего добивались?
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.01.2012, 17:36 #14
Цитата Сообщение от 1rop Посмотреть сообщение
size_t len=strlen(chislo[i]);
По всей видимости i-ый указатель не существует (мусор). Следите за i, или Вы его все же правильно инициализировали?
1rop
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 120
12.01.2012, 17:39  [ТС] #15
я хотел что бы у меня в строку chislo[i] приписывался символ из s1

тип char** chislo;
char s1;
int i;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2012, 17:39
Привет! Вот еще темы с ответами:

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*) - C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть сложить строки и назначить результату...

Различное поведение функции которая копирует строки с char* t и char t[] - C++
столкнулся с ситуацией которую не могу объяснить пишем функцию которая копирует одну строку в другую: void strstr(char* t,...

Сделать преобразование unsigned char в char, а затем типу int - C++
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.01.2012, 17:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru