Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 17:58   #1
Влюблённая в мечту
 
Аватар для Влюблённая в мечту
 
Регистрация: 21.03.2011
Сообщений: 4
По умолчанию Считывание строки с клавиатуры С++

Здравствуйте!
Вы бы не могли мне немножко помочь?)
Написала функцию чтения строки посимвольно в массив:

char* getsS(){
char c;
char*s;
while ((c=getchar())!='\n'){
*(s++)=c;
};
return s;
};

Но на ней прога вылетает =(
Почему?
Влюблённая в мечту вне форума Ответить с цитированием
Старый 01.04.2011, 18:02   #2
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

Потому что пытается прочитать несуществующий элемент строки?
Попробуйте цикл for от еденицы до длины строки
Хотя может я вам наврал я c++ не знаю
Ок прочитал тему и понял что туплю

Последний раз редактировалось BoozZzilla; 01.04.2011 в 18:08.
BoozZzilla вне форума Ответить с цитированием
Старый 01.04.2011, 18:31   #3
Влюблённая в мечту
 
Аватар для Влюблённая в мечту
 
Регистрация: 21.03.2011
Сообщений: 4
По умолчанию

В цикле написать не могу, так как неизвестна длина строки, которая будет введена с клавиатуры)
Но всё равно спасибо, что откликнулись
Влюблённая в мечту вне форума Ответить с цитированием
Старый 01.04.2011, 18:40   #4
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Код:
void getsS(char *str){
	char c;
	int i;
	for(i=0;(c=getchar())!='\n';i++) *(str+i) = c;
	*(str+i) = '\0';
}
Вместо того,чтобы функция возвращала указатель на строку, функция будет работать именно с изначальной строкой (по указателю )
и кстати после '}' точка с запятой не ставится (исключение - класс )
Hemul вне форума Ответить с цитированием
Старый 01.04.2011, 18:47   #5
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

Мне самому интересно
А как и где задается длина s?
Тьфу, длина возвращаемого массива
Не реагируйте бурно, я может даже пойму если мне ответить

Последний раз редактировалось BoozZzilla; 01.04.2011 в 18:51.
BoozZzilla вне форума Ответить с цитированием
Старый 01.04.2011, 18:55   #6
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

длина массива нигде не узнается , да она и не нужна.
Тут просто символ введен -> символ установлен в массив через указатель
Ну а если границы переполнены , выскочит ошибка переполнения памяти на этапе использования программы
Hemul вне форума Ответить с цитированием
Старый 01.04.2011, 19:04   #7
Влюблённая в мечту
 
Аватар для Влюблённая в мечту
 
Регистрация: 21.03.2011
Сообщений: 4
По умолчанию

Спасибо большое, но мне хотелось бы всё-таки узнать почему та моя функция вылетала...
А длина строки, как я понимаю, нигде не хранится, а только известно что признак конца строки-символ 0. Ведь в Си - не как в делфи-нет такого типа строка, а есть лишь массив указателей на чар.
Насколько я знаю)
Влюблённая в мечту вне форума Ответить с цитированием
Старый 01.04.2011, 19:06   #8
Влюблённая в мечту
 
Аватар для Влюблённая в мечту
 
Регистрация: 21.03.2011
Сообщений: 4
По умолчанию

ой, не массив указателей, а указатель на массив)))
Влюблённая в мечту вне форума Ответить с цитированием
Старый 01.04.2011, 19:07   #9
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Цитата:
Сообщение от Hemul Посмотреть сообщение
и кстати после '}' точка с запятой не ставится (исключение - класс )
это не исключение - это конец объявления нового типа
onewho вне форума Ответить с цитированием
Старый 01.04.2011, 20:12   #10
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

class A{
// ....
} objectA ;
== class objectA;
но ведь это дела не меняет ,все равно точка с запятой после '}' не ставится везде кроме классов (структур и объединений)
Hemul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывание файла со второй строки (delphi) CAMOBAP Помощь студентам 19 12.01.2011 23:04
Считывание строки из консоли СИ с использованием getchar() vedro-compota Общие вопросы C/C++ 11 17.12.2010 12:19
Считывание строки неограниченной длины (Си) 0kopok Помощь студентам 6 05.10.2009 20:46
Считывание строки из файла до символа Stormzcooler Общие вопросы Delphi 7 18.12.2006 15:01