Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
ikmik
6 / 6 / 0
Регистрация: 07.07.2011
Сообщений: 117
#1

getline не читает дальше пробела - C++

28.10.2012, 20:56. Просмотров 741. Ответов 9
Метки нет (Все метки)

И снова глупый вопрос:
C++
1
2
3
4
5
6
7
8
       char **ostchar = new char;
        *ostchar = new char
    for(sch = 0; sch < n; sch++){
        cin.getline(ostchar[sch], n*2-1);
        for(int sch2 = 0; sch2 < n; sch2++){
            kvadrat[sch][sch2] = atoi(&ostchar[sch][sch2*2]);
        }
    }
выдает ошибку доступа, а при дебаге говорит, что прочитал только один символ. Почему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 20:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос getline не читает дальше пробела (C++):

cin.getline() не читает строку - C++
Добрый день. Нужно последовательно ввести 2 строки через cin.getline(), но после ввода первой, если она превышает допустимый размер, ввод...

cin.getline() не читает 1 символ - C++
Доброго времени суток :) пишу довольно простой код, но тут появилась проблема. Вот обрезаний кусок кода который не хочет работать...

Почему stream.getline считывает до пробела? - C++
Задание: удалить все адреса изображений в html-файле (в теге img значение атрибута src заменить на пустое). void...

При использовании getline ввод при Enter заканчивается только после пробела - C++
int main() { string slovo; double n; while(slovo != &quot;пока&quot; ) { getline (cin,slovo,' '); if (slovo ==...

как сделать так чтобы была возможность записывать и фамилию и имя,а то у меня только до пробела читает? - C++
здраствуйте!скажите пож-та как сделать так чтобы была возможность записывать и фамилию и имя,а то у меня только до пробела читает? ...

fscanf(stream,"%s",s) читает до первого пробела? - C++
как прочитать строку из текстового файла целиком? (до \n)

9
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
28.10.2012, 21:39 #2
Цитата Сообщение от ikmik Посмотреть сообщение
char **ostchar = new char;
Здесь как минимум нужно
C++
1
char **ostchar = new char*;
При этом выделяется память под один указатель на чар
Цитата Сообщение от ikmik Посмотреть сообщение
*ostchar = new char
Выделяется память под один чар
Если подстраивать под строки
Цитата Сообщение от ikmik Посмотреть сообщение
for(sch = 0; sch < n; sch++){
cin.getline(ostchar[sch], n*2-1);
получится
C++
1
2
3
char **ostchar = new char*[n];
for (int i = 0; i < n; i++)
   ostchar[i] = new char [2*n];
1
ikmik
6 / 6 / 0
Регистрация: 07.07.2011
Сообщений: 117
28.10.2012, 21:48  [ТС] #3
Помогло, но не совсем: теперь он не выбрасывает из программы, но вторую строку все равно не дает ввести, а при попытке вывода пишет, что в невведеной строке "0 0"
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
28.10.2012, 21:51 #4
Попробуйте после ввода поставить cin.sync();
0
Textures
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 13
28.10.2012, 21:59 #5
&ostchar
Я в ссылках и указателях не разбираюсь, но разве после того как объявил указатель можно с ним так работать?
0
ikmik
6 / 6 / 0
Регистрация: 07.07.2011
Сообщений: 117
28.10.2012, 22:01  [ТС] #6
kazak, Прости, не помогло

Textures, конечно можно
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
28.10.2012, 22:10 #7
Цитата Сообщение от Textures Посмотреть сообщение
Я в ссылках и указателях не разбираюсь, но разве после того как объявил указатель можно с ним так работать?
В данном контексте & - означает операцию взятия адреса.

Добавлено через 9 минут
Кстати об адресе

Цитата Сообщение от ikmik Посмотреть сообщение
atoi(&ostchar[sch][sch2*2]);
Так нельзя, atoi ждет нуль-терминированную строку в виде указателя на ее начало, а получает адрес отдельного чара.
0
ikmik
6 / 6 / 0
Регистрация: 07.07.2011
Сообщений: 117
28.10.2012, 22:15  [ТС] #8
kazak, так мне нужен отдельный чар

теперь о продвижениях:
я заменил getline на read, теперь дает ввести вторую строку, но выводит все тоже самое
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
28.10.2012, 22:18 #9
Суть программы какова?
0
ikmik
6 / 6 / 0
Регистрация: 07.07.2011
Сообщений: 117
28.10.2012, 22:19  [ТС] #10
Все, спасибо всем, справился. заменил в цикле иниализации < на <=
0
28.10.2012, 22:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2012, 22:19
Привет! Вот еще темы с ответами:

Отличие getline() от cin.getline() - C++
Чем отличается getline() от cin.getline() ?

Объясните разницу между "cin.getline" и "std::getline" - C++
string a; cin.getline(a); getline(cin, a);в чем разница между &quot;cin.getline(a);&quot; и &quot;getline(cin, a);&quot;

Подсчитать количество слов, в тексте от пробела до пробела, и количество букв - C++
нужно создать програму считает количество слов, в тексте от пробела до пробела(если два пробела сразу конец текста), а также ...

В тексте между словами вместо одного пробела вставить по 3 пробела - Assembler
Написать программу на tasm c вводом и выводом: в тексте между словами вместо одного пробела вставить по 3 пробела.


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

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

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