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

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

Войти
Регистрация
Восстановить пароль
 
noobolamer
0 / 0 / 0
Регистрация: 03.07.2014
Сообщений: 2
#1

Посоветуйте альтернативу scanf() в этом коде - C++

03.07.2014, 04:07. Просмотров 291. Ответов 6
Метки нет (Все метки)

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
41
42
43
44
45
46
47
48
49
// не работает scanf() в цыкле if, если же перед %c поставить пробел почему то, если ввести  Y  то происходит
// замещение строк, выглядит как будто z[2].a, 99 уже введено
#include <cstdio>
#include <iostream>
using namespace std;
 
struct x
{
char a[100], b[100], c[500];
int y;
float v;
} z[3];
 
int main(void)
{
int t = 0;
int r = 0;
char f;
do
        {
        cout << "Put the name of the track:" << endl;
        printf("%d)", t+1);
        cin.getline(z[t].a, 99);
        cout << "Put the author of the composition:" << endl;
        printf("%d)", t+1);
        cin.getline(z[t].b, 99);
        cout << "Put the description of the track:" << endl;
        printf("%d)", t+1);
        cin.getline(z[t].c, 499);
        cout << "Put the number of the track:" << endl;
        printf("%d)", t+1);
        scanf("%d", &z[t].y);
        cout << "Put the rate of the track:" << endl;
        printf("%d)", t+1);
        scanf("%f", &z[t].v);
        t++;
        if(t < 3)
                {
                cout << "Do you want to put information about next track ? Y/n ?" << endl;
                scanf("%c", &f);
                }
        }
while(t < 3 && (f == 'Y' || f == 'y'));
puts("Name      Author          Description             Number  Rate\n");
for(r = 0;r < t; r++)
printf("%s      %s              %s              %d      %.2f", z[r].a, z[r].b, z[r].c, z[r].y, z[r].v);
putchar('\n');
return(0);
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2303 / 1019 / 232
Регистрация: 30.11.2013
Сообщений: 3,378
03.07.2014, 04:34     Посоветуйте альтернативу scanf() в этом коде #2
Цитата Сообщение от noobolamer Посмотреть сообщение
Посоветуйте альтернативу scanf() в этом коде
C++
1
 gets(&f);
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2014, 08:23     Посоветуйте альтернативу scanf() в этом коде #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
(cin >> z[t].y).get(); // вместо scanf("%d", &z[t].y);
и т.д.
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 1
03.07.2014, 08:47     Посоветуйте альтернативу scanf() в этом коде #4
rikimaru2013, gets читает строку, т.е. массив символов (с завершающим нулем), а f у ТС - один символ.
для чтения символов есть функция f=getchar();
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,298
03.07.2014, 09:05     Посоветуйте альтернативу scanf() в этом коде #5
Цитата Сообщение от noobolamer Посмотреть сообщение
(f == 'Y' || f == 'y'))
раскладку клавы посмотри, по умолчанию вполне может прыгнуть в русский
а лучше так
(f == 'Y' || f == 'y' || f == 'н' || f == 'Н'))
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2014, 11:06     Посоветуйте альтернативу scanf() в этом коде #6
Цитата Сообщение от noobolamer Посмотреть сообщение
// не работает scanf() в цыкле if, если же перед %c поставить пробел почему то, если ввести *Y *то происходит
// замещение строк, выглядит как будто z[2].a, 99 уже введено
Если правильно понял проблему:
C++
1
2
scanf("%c", &f);
getchar(); // убрать из потока '\n' перед getline()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2014, 20:03     Посоветуйте альтернативу scanf() в этом коде
Еще ссылки по теме:

C++ Как дописать цикл в этом коде?
C++ как сделать защиту от дурака в этом коде?
Все ли хорошо в этом коде C++
C++ какая функция знака процента в этом коде?
замена scanf и printf на cin и cout в коде C++

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

Или воспользуйтесь поиском по форуму:
noobolamer
0 / 0 / 0
Регистрация: 03.07.2014
Сообщений: 2
03.07.2014, 20:03  [ТС]     Посоветуйте альтернативу scanf() в этом коде #7
Всем спасибо ответ alsav22 решил проблему.
Yandex
Объявления
03.07.2014, 20:03     Посоветуйте альтернативу scanf() в этом коде
Ответ Создать тему
Опции темы

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