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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 10:42   #1
natt23
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 11
По умолчанию Строковые переменные

С помощью какой функции можно считать ФИО в переменную типа char fio[20]. При использовании scanf считывается только то,что вводится до 1 пробела. Какую функцию нужно использовать?
natt23 вне форума Ответить с цитированием
Старый 10.04.2011, 10:50   #2
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Сообщений: 164
По умолчанию

Функцию gets() используй. Она все предложение считывает
Записывается она вот так:
Код:
gets(fio);
Где fio строковая переменная в которую надо считать предложение
Она по моему в библиотеке iostream.h находится.
Ibanez Wizard вне форума Ответить с цитированием
Старый 10.04.2011, 11:08   #3
EC.cpp
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 30
По умолчанию

А говорят ещё есть такая функция из библиотеки <iostream>:

cin >> fio;

P.S. Ток она не очень надежная :-) Но на пару раз самое то;
EC.cpp вне форума Ответить с цитированием
Старый 10.04.2011, 11:17   #4
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Сообщений: 164
По умолчанию

Цитата:
А говорят ещё есть такая функция из библиотеки <iostream>:

cin >> fio;

P.S. Ток она не очень надежная :-) Но на пару раз самое то;
Да. Я её всегда использую для ввода чисел, т.е. если программы не работает с символьными массивами. Она тоже до пробела считывает. Я просто ещё вчера писал программу, которая работает не со словами а с предложениями и там надо было посчитать количество символов в нём, а по скольку я вводил предложение функцией cin >>, то считались только символы в первом слове.

Последний раз редактировалось Ibanez Wizard; 10.04.2011 в 11:38.
Ibanez Wizard вне форума Ответить с цитированием
Старый 10.04.2011, 11:58   #5
EC.cpp
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Ibanez Wizard Посмотреть сообщение
Да. Я её всегда использую для ввода чисел, т.е. если программы не работает с символьными массивами. Она тоже до пробела считывает. Я просто ещё вчера писал программу, которая работает не со словами а с предложениями и там надо было посчитать количество символов в нём, а по скольку я вводил предложение функцией cin >>, то считались только символы в первом слове.
Точно :-) С пробелом не запишет.
Вот здесь вроде обсуждалась аналогичная тема, просмотрите.
EC.cpp вне форума Ответить с цитированием
Старый 10.04.2011, 12:09   #6
natt23
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 11
По умолчанию

Работает gets, но как-то коряво.


clrscr(); textbackground(16);textcolor(15);
gotoxy(9,6); cprintf("┌───────────────────────── ────────────────────────────────┐") ;
gotoxy(9,7); cprintf("│ Введите группу опращиваемых, к которой │");
gotoxy(9,8); cprintf("│ │");
gotoxy(9,9); cprintf("│ вы относитесь: │");
gotoxy(9,10);cprintf("└──────────── ─────────────────────────────────── ──────────┘");
gotoxy(37,9);scanf("%s",&gr_opr);


kluc=0;

clrscr(); textbackground(16);textcolor(15);
gotoxy(9,6); cprintf("┌───────────────────────── ────────────────────────────────┐") ;
gotoxy(9,7); cprintf("│ Введите ФИО учителя(преподавателя): │");
gotoxy(9,8); cprintf("│ │");
gotoxy(9,9); cprintf("└───────────────────────── ────────────────────────────────┘") ;
gotoxy(47,7);gets(spis.fio);



// учителя
if((stricmp(gr_opr,uchitel)==0)||(s tricmp(gr_opr,admin)==0)||(stricmp( gr_opr,samooc)==0))
{и так далее))

Если вводить сразу,убирая запрос на ввод груп,то норм считывает все,а вот целиком если все,после ввода группы вообще пропускает ввод фио и сразу дальше идет(даже рамку не выводит)((((((((((
natt23 вне форума Ответить с цитированием
Старый 10.04.2011, 12:29   #7
EC.cpp
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 30
По умолчанию

Хм, есть одна идея, но не факт что сработает
попробуйте перед каждым использованием gets(), написать:
fflush(stdin);
или
fflush(stdout);
EC.cpp вне форума Ответить с цитированием
Старый 10.04.2011, 12:40   #8
natt23
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 11
По умолчанию

СПАСИБО ОГРОМНОЕ))))) Работает!!!))))) Весь день убила на 1 ф-ию))))Еще раз спасибо.
natt23 вне форума Ответить с цитированием
Старый 15.04.2011, 18:54   #9
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Многие строковые функции не являются стандартными функциями С++, и по тому конфликтуют. Ещё можно использовать cin.ignore(1); и cin.clear()
Trust_357 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковые переменные ramilll Паскаль, Turbo Pascal, PascalABC.NET 0 20.12.2010 19:53
Строковые переменные locdoc Помощь студентам 5 14.11.2010 14:14
Строковые переменные nisha Помощь студентам 3 12.11.2010 20:51
строковые переменные Serious Помощь студентам 3 01.02.2010 20:15
строковые переменные for_tuna Помощь студентам 0 06.12.2009 21:21