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

Ввести char * в консоль - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
06.07.2013, 19:31     Ввести char * в консоль #1
Долбанный char * не получается ввести не cin ни gets ни getsline и т.д.
Не могу понять как его ввести.
Есть код:
C++
1
2
char *tbLEN = "TESTVASYA AND TWO TEXTZZ";
// Далее шифрование и другие действия...
Надо сделать как то так:
C++
1
2
char *tbLEN = (ввод с клавы в консоль с учетом пробелов!);
// Далее шифрование и другие действия...
Help!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 19:31     Ввести char * в консоль
Посмотрите здесь:

тип CHAR ... Как ввести предложение через пробелы?? C++
char массив, get(), ввести больше символов чем в массиве C++
C++ Ввести количество товара и стоимость за одну штуку, вычислить скидку и вывести результат в консоль
*char (запрашивает ввести фамилию) C++
Написать программу, которая предлагает пользователю ввести число и выводит в консоль его факториал C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.07.2013, 19:35     Ввести char * в консоль #2
представьте, что вы купили квартиру в еще непостроенном доме (только фундамент возвели), получится ли в нее переехать с вещами?
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 254
06.07.2013, 19:35     Ввести char * в консоль #3
вся проблема в том что надо писать не char *переменная, а char* переменная это 100% но если есть другие ошибки в коде - не вини меня)
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
06.07.2013, 19:40     Ввести char * в консоль #4
Ну или добавить ...tbLen=new char[миллион]; а в конце обязательно delete[]tbLen. Хотя текст стороки не большой, лучше так:

char tbLEN[1024];
gets(tbLen);
// Далее шифрование и другие действия...
Thinker
06.07.2013, 19:44
  #5

Не по теме:

svk2140, не позорьтесь!

castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 19:48     Ввести char * в консоль #6
Цитата Сообщение от svk2140 Посмотреть сообщение
вся проблема в том что надо писать не char *переменная, а char* переменная это 100%
Ну что за бред, ребят.. ей богу..
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
06.07.2013, 19:50  [ТС]     Ввести char * в консоль #7
svk2140, к сожалению позиция звездочки значения не имеет.
Retyrn0, ты написал все верно, но упустил одну вещь. У меня тип со звездочкой и ввести мне нужно именно в указанную переменную char *tbLEN иначе далее по коду шифрирование не будет работать. Поэтому твой совет в данный момент не несет решения проблемы
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 254
06.07.2013, 20:03     Ввести char * в консоль #8
ну ёмаё подумаешь сделал как я привык) думал вопрос лёгкий без проверки напишу)

Добавлено через 2 минуты
стоп объясните плиз нафига вообще тут *?

Добавлено через 26 секунд
без звёздочки работает)
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
int main()
{
    char s = 'd';
    cin >> s;
    cout << s << endl;
}
castaway
06.07.2013, 20:04
  #9

Не по теме:

svk2140, пойми меня правильно, у тебя есть одна большая проблема, ты отвечаешь не думая и при чем абсолютно уверенно, и это очень плохо. Я не собираюсь тебя воспитывать, просто подумай над этим..

beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
06.07.2013, 20:05  [ТС]     Ввести char * в консоль #10
без звёздочки у меня тогда вся программа далее работать не будет) а нужно это для ширфования гаммированием
-=ЮрА=-
Заблокирован
Автор FAQ
06.07.2013, 20:05     Ввести char * в консоль #11
beats, если по простому
Цитата Сообщение от beats Посмотреть сообщение
Надо сделать как то так:
Код C++
1
2
char *tbLEN = (ввод с клавы в консоль с учетом пробелов!);
// Далее шифрование и другие действия...
Help!
то динамический ввод делается так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
using namespace std;
 
template <class T>
T * memalloc(T * ptr, int prev, int next);
 
int main()
{
    char chBuf = 0;
    char * str = 0;
    int size   = 0;
    while((chBuf = cin.get()) != '\n')
    {
        str = memalloc(str, size, size + 1);
        str[size++] = chBuf;
    }
    str[size] = '\0';
    cout<<"YOUR INPUT : "<<str<<endl;
    cin.get();
    return 0;
}
 
template <class T>
T * memalloc(T * ptr, int prev, int next)
{
    T * dst = 0;
    if( next)
    {
        dst = new T[next];
        if( ptr )
        if( prev < next )
            memcpy(dst, ptr, prev);
        else
            memcpy(dst, ptr, next);
        if( ptr )
        delete [] ptr;
    }
    ptr = dst;
    return dst;
}
Миниатюры
Ввести char * в консоль  
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 20:08     Ввести char * в консоль #12
beats, ты зря лезешь в шифрование. Изучи элементарные основы языка.
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 254
06.07.2013, 20:09     Ввести char * в консоль #13
Цитата Сообщение от lazybiz Посмотреть сообщение
Ну что за бред, ребят.. ей богу..
я сейчас тебя не понял! я вить ошибочно не говорю того чего не знаю) да и ошибок в моих программах нету)
castaway
06.07.2013, 20:12
  #14

Не по теме:

Цитата Сообщение от svk2140 Посмотреть сообщение
вся проблема в том что надо писать не char *переменная, а char* переменная это 100%
Ты уверил на 100% что это так.

Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
06.07.2013, 20:48     Ввести char * в консоль #15
я, что-то упускаю или недопонимаю(что более вероятно), чем автору не угодило:
C++
1
2
3
4
5
6
char *tbLEN;
tbLEN = new char [1024];
 
cin.getline(tbLEN,1024);
 
cout << tbLEN;
Объясните если не сложно.
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
06.07.2013, 20:50  [ТС]     Ввести char * в консоль #16
-=ЮрА=-, спасибо! Проблема решена
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
06.07.2013, 21:05     Ввести char * в консоль #17
Цитата Сообщение от beats Посмотреть сообщение
ты написал все верно, но упустил одну вещь. У меня тип со звездочкой и ввести мне нужно именно в указанную переменную char *tbLEN иначе далее по коду шифрирование не будет работать. Поэтому твой совет в данный момент не несет решения проблемы
В чём проблема? Создадим указатель на массив с нужным именем, а сам массив преименуем...

char tbL[1024],*tbLEN=tbL;
gets(tbL);
// Далее шифрование и другие действия...
-=ЮрА=-
Заблокирован
Автор FAQ
06.07.2013, 21:57     Ввести char * в консоль #18
Цитата Сообщение от beats Посмотреть сообщение
-=ЮрА=-, спасибо! Проблема решена
всегда пожалуйста.
Да забыл сбросить - вот линки на простенький алгоритм шифрования
Шифрование методом перестановки



Добавлено через 8 минут

Не по теме:

Цитата Сообщение от Denisqwwq Посмотреть сообщение
я, что-то упускаю или недопонимаю(что более вероятно), чем автору не угодило:
char *tbLEN;
tbLEN = new char [1024];
cin.getline(tbLEN,1024);
cout << tbLEN;
Объясните если не сложно.
- попробую ответь за ТС - если нужна строка заранее неизвестного размера, т.е нужна динамическая строка аккурат по вводу.
Не вопрос это можно было сделать через std::string и getline но в текущем ТЗ
Цитата Сообщение от beats Посмотреть сообщение
char *tbLEN = (ввод с клавы в консоль с учетом пробелов!);
видмм явное указание на динамику причём без STL

Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 675
Завершенные тесты: 1
06.07.2013, 22:18     Ввести char * в консоль #19
Цитата Сообщение от Denisqwwq Посмотреть сообщение
я, что-то упускаю или недопонимаю(что более вероятно), чем автору не угодило:
А как на счёт delete[]tbLen?)

Добавлено через 5 минут
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
динамическая строка аккурат по вводу
С гигабайтами оперативной памяти это очень актуальный вопрос ;-) С учётом того, что скорее всего программа отработает секунд за..полторы, то тут вообще ПРОБЛЕМИЩА) Утечки памяти там будут, программа зависнет от недостачи памяти даже с учётом файла подкачки и комп сразу встанет и убежит в ужасе и мыслью "Какой психопат потребовал от меня АЖ 1024 байта под массив? о_О" =)))))) Ну я ошибся, конечно, тут надо целых 1025 байтов!!! Ну с учётом нулевого байта в конце=)

Добавлено через 2 минуты
Зачем использовать "кучу" для 1025 символов? Хотя да, плевать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2013, 22:19     Ввести char * в консоль
Еще ссылки по теме:

Вывод массива char* на консоль C++
Как ввести с клавиатуры слова в char? C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
06.07.2013, 22:19     Ввести char * в консоль
  #20

Не по теме:

Цитата Сообщение от Retyrn0 Посмотреть сообщение
С гигабайтами оперативной памяти это очень актуальный вопрос ;-) С учётом того, что скорее всего программа отработает секунд за..полторы, то тут вообще ПРОБЛЕМИЩА)
- я считывал для разбора AVI аккурат в Гиг размером, в чём проблема?Я не уловил пока

Yandex
Объявления
06.07.2013, 22:19     Ввести char * в консоль
Ответ Создать тему
Опции темы

Текущее время: 05:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru