Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
41 / 41 / 10
Регистрация: 22.05.2009
Сообщений: 492
1

С++ из char[] в *char

13.11.2012, 18:34. Показов 4842. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Совсем забыл с++ ...

C++
1
2
3
char *token = "Слово";
 
char *one_char; //Нужно сделать массив состоящий из первого символа token, как это сделать?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2012, 18:34
Ответы с готовыми решениями:

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор не посылает куда...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что "char *concat(char *,...)": невозможно...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;,...

Как присвоить к новой char переменной другую char переменную с указателем
Как присвоить к новой char переменной другую char переменную с указателем #include&lt;iostream&gt;...

28
58 / 58 / 13
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 18:49 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main()
{
    char *token = "Word";
    char *one_char = new char(strlen(token));
    memcpy(one_char, "\0", strlen(one_char)); // Чищу строку
 
    memcpy(one_char, token, 1); // Копирую первый символ строки token
    printf("%s\n", one_char);
 
    return 0;
}
1
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
13.11.2012, 19:02 3
C++
1
char *one_char = new char(strlen(token));
Круглые скобки - получается new char, который инициализируется значением strlen(token). В отличие от new char[...].
C++
1
memcpy(one_char, "\0", strlen(one_char));
1) one_char указывает на неизвестно какую строку, чему же будет равен strlen???
2) "\0" - это строка из двух char'ов, а что после неё - неизвестно. Как же можно из неё копировать strlen(onechar) (== ???) символов?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.11.2012, 19:04 4
В дополнение - забыли
C++
1
delete[]
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
13.11.2012, 19:08 5
C++
1
2
3
4
5
6
7
8
#include <stdio.h>
int main()
{
  char *token = "Word";
  char one_char [1];
  one_char [0]= token[0]; 
  return 0;
}
и всё на этом.
0
41 / 41 / 10
Регистрация: 22.05.2009
Сообщений: 492
13.11.2012, 19:15  [ТС] 6
kravam, Не все так просто...
one_char = "WММММММММ„xA"//вот что попадает в one_char в твоем примере

extenup, Твой способ нормально отработал, спасибо
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
13.11.2012, 19:17 7
Цитата Сообщение от From_Tula Посмотреть сообщение
extenup, Твой способ нормально отработал
Если бы всегда людям так сильно везло...
0
58 / 58 / 13
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 19:18 8
Цитата Сообщение от Somebody Посмотреть сообщение
1) one_char указывает на неизвестно какую строку, чему же будет равен strlen???
C++
1
char *one_char = new char(strlen(token));
Не известно что находится в строке one_char, но отлично известна его длина..
0
41 / 41 / 10
Регистрация: 22.05.2009
Сообщений: 492
13.11.2012, 19:21  [ТС] 9
Ладно, в итоге есть такой способ с которым согласятся все?))

В php блин никаких запаров...=)
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
13.11.2012, 19:21 10
Цитата Сообщение от extenup Посмотреть сообщение
C++
1
char *one_char = new char(strlen(token));
Не известно что находится в строке one_char, но отлично известна его длина..
Может нужны квадратные скобки?
0
58 / 58 / 13
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 19:25 11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Может нужны квадратные скобки?
Можно и квадратные и круглые, без разницы.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.11.2012, 19:30 12
Цитата Сообщение от extenup Посмотреть сообщение
Можно и квадратные и круглые, без разницы.
разница такая, что с круглыми будет выделена память для одного char'а и туда будет записан символ с кодом равным длине строки token
Цитата Сообщение от extenup Посмотреть сообщение
Не известно что находится в строке one_char, но отлично известна его длина..
зато здесь его длина не известна:
C++
1
memcpy(one_char, "\0", strlen(one_char))
"\0" - предаствляется как '\0''\0'
Цитата Сообщение от From_Tula Посмотреть сообщение
one_char = "WММММММММ„xA"//вот что попадает в one_char в твоем примере
Потому что вы пытаетесь его вывести как строку, а в ней нет символа \0
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
13.11.2012, 19:30 13
Цитата Сообщение от extenup Посмотреть сообщение
Можно и квадратные и круглые, без разницы.
Нет, не без разницы. Говорю же:
new char[10] - это 10 char'ов, а new char(10) - это 1 char, который равен 10.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.11.2012, 19:37 14
Цитата Сообщение от From_Tula Посмотреть сообщение
Нужно сделать массив состоящий из первого символа token, как это сделать?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    char *token="Word";
    char *one_char=new char;
    *one_char=token[0];
    cout<<*one_char<<endl;
    cin.get();
    delete one_char;
    return 0;
}
Это? Или я не совсем понял что необходимо

Добавлено через 1 минуту
Цитата Сообщение от From_Tula Посмотреть сообщение
extenup, Твой способ нормально отработал, спасибо
Вам просто повезло!
0
58 / 58 / 13
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 19:37 15
Цитата Сообщение от Somebody Посмотреть сообщение
Нет, не без разницы. Говорю же:
new char[10] - это 10 char'ов, а new char(10) - это 1 char, который равен 10.
Да, точно.)
0
41 / 41 / 10
Регистрация: 22.05.2009
Сообщений: 492
13.11.2012, 19:38  [ТС] 16
Как убогий вариант=)

C++
1
2
3
4
5
    char one_char[2];
    one_char[1]='\0';
 
char *token = "Слово";
one_char[0]=token[0];
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
13.11.2012, 19:43 17
Цитата Сообщение от From_Tula Посмотреть сообщение
kravam, Не все так просто...
one_char = "WММММММММ„xA"//вот что попадает в one_char в твоем примере
Ну а чё тебе не нравится? Ты просил сделать единичный массив, его сделал, просил запихать туда первый символ token, я запихал. А чё уж там за W следует мне безразлично, да и тобой по следующим символам ничего заявлено не было.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.11.2012, 19:44 18
Цитата Сообщение от kravam Посмотреть сообщение
А чё уж там за W следует мне безразлично
да все там правильно. Просто выводят, наверное так:
C++
1
cout<<one_char;
0
41 / 41 / 10
Регистрация: 22.05.2009
Сообщений: 492
13.11.2012, 19:52  [ТС] 19
Цитата Сообщение от kravam Посмотреть сообщение
Ну а чё тебе не нравится? Ты просил сделать единичный массив, его сделал, просил запихать туда первый символ token, я запихал. А чё уж там за W следует мне безразлично, да и тобой по следующим символам ничего заявлено не было.
Единичный массив, наверное это тот массив длина которого равна 1.
Или я не прав?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
13.11.2012, 19:53 20
Цитата Сообщение от From_Tula Посмотреть сообщение
Единичный массив, наверное это тот массив длина которого равна 1.
Или я не прав?
Правы. А Вам сколько нужно?
0
13.11.2012, 19:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2012, 19:53
Помогаю со студенческими работами здесь

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

Проблема с несовместимостью типов параметров char, const char, STRSAFE_LPWSTR, STRSAFE_LPCWSTR
Проблемные вопросы отражены на скрине Программа написана к заданию: 1. Разработать прикладной...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *'
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void...

Однонаправленные списки. [Error] incompatible types in assignment of 'char*' to 'char [128]'
Доброго времени суток. Начал учить однонаправленные списки, но столкнулся с проблемой: ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru