Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
beats
100 / 38 / 9
Регистрация: 09.12.2012
Сообщений: 567
1

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

06.07.2013, 19:31. Просмотров 2133. Ответов 21
Метки нет (Все метки)

Долбанный char * не получается ввести не cin ни gets ни getsline и т.д.
Не могу понять как его ввести.
Есть код:
C++
1
2
char *tbLEN = "TESTVASYA AND TWO TEXTZZ";
// Далее шифрование и другие действия...
Надо сделать как то так:
C++
1
2
char *tbLEN = (ввод с клавы в консоль с учетом пробелов!);
// Далее шифрование и другие действия...
Help!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 19:31
Ответы с готовыми решениями:

Char выводит в консоль ╠
Здравствуйте. Проблема состоит в том, что при выводе строки building_name в get...

Вывод массива char* на консоль
Пытаюсь вывести массив чаров в консоль, но выходит какая-та белеберда. Вывод...

Ввести строку char с консоли
Добрый день! Помогите, пожалуйста. В моей программе используются...

*char (запрашивает ввести фамилию)
Проблема такая, как с указателем на *char выделить память под неизветное...

Как ввести с клавиатуры слова в char?
подскажите пожалуйста как ввести с клавиатуры "fat a cat sit in the table" или...

21
Thinker
Эксперт С++
4233 / 2207 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.07.2013, 19:35 2
представьте, что вы купили квартиру в еще непостроенном доме (только фундамент возвели), получится ли в нее переехать с вещами?
0
svk2140
88 / 0 / 3
Регистрация: 04.07.2013
Сообщений: 282
06.07.2013, 19:35 3
вся проблема в том что надо писать не char *переменная, а char* переменная это 100% но если есть другие ошибки в коде - не вини меня)
0
Retyrn0
45 / 45 / 5
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
06.07.2013, 19:40 4
Ну или добавить ...tbLen=new char[миллион]; а в конце обязательно delete[]tbLen. Хотя текст стороки не большой, лучше так:

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

Не по теме:

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

1
castaway
Эксперт С++
4932 / 3038 / 454
Регистрация: 10.11.2010
Сообщений: 11,117
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 19:48 6
Цитата Сообщение от svk2140 Посмотреть сообщение
вся проблема в том что надо писать не char *переменная, а char* переменная это 100%
Ну что за бред, ребят.. ей богу..
1
beats
100 / 38 / 9
Регистрация: 09.12.2012
Сообщений: 567
06.07.2013, 19:50  [ТС] 7
svk2140, к сожалению позиция звездочки значения не имеет.
Retyrn0, ты написал все верно, но упустил одну вещь. У меня тип со звездочкой и ввести мне нужно именно в указанную переменную char *tbLEN иначе далее по коду шифрирование не будет работать. Поэтому твой совет в данный момент не несет решения проблемы
0
svk2140
88 / 0 / 3
Регистрация: 04.07.2013
Сообщений: 282
06.07.2013, 20:03 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;
}
0
castaway
06.07.2013, 20:04
  #9

Не по теме:

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

0
beats
100 / 38 / 9
Регистрация: 09.12.2012
Сообщений: 567
06.07.2013, 20:05  [ТС] 10
без звёздочки у меня тогда вся программа далее работать не будет) а нужно это для ширфования гаммированием
0
-=ЮрА=-
Заблокирован
Автор FAQ
06.07.2013, 20:05 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;
}
2
Миниатюры
Ввести char * в консоль  
castaway
Эксперт С++
4932 / 3038 / 454
Регистрация: 10.11.2010
Сообщений: 11,117
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 20:08 12
beats, ты зря лезешь в шифрование. Изучи элементарные основы языка.
0
svk2140
88 / 0 / 3
Регистрация: 04.07.2013
Сообщений: 282
06.07.2013, 20:09 13
Цитата Сообщение от lazybiz Посмотреть сообщение
Ну что за бред, ребят.. ей богу..
я сейчас тебя не понял! я вить ошибочно не говорю того чего не знаю) да и ошибок в моих программах нету)
0
castaway
06.07.2013, 20:12
  #14

Не по теме:

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

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

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



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

Не по теме:

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

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

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

Добавлено через 2 минуты
Зачем использовать "кучу" для 1025 символов? Хотя да, плевать.
0
-=ЮрА=-
06.07.2013, 22:19     Ввести char * в консоль
  #20

Не по теме:

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

0
06.07.2013, 22:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2013, 22:19
Привет! Вот еще темы с ответами:

Как увеличить максимальное количество символов, которое можно ввести в консоль?
Я использую функцию cin.getline(article, 9999);Как видите, количество символов...

char массив, get(), ввести больше символов чем в массиве
#include &lt;iostream&gt; using std::cin; using std::cout; using std::endl; ...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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