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

scanf. Разбиение. - C++

Восстановить пароль Регистрация
 
Sunman
56 / 56 / 4
Регистрация: 02.03.2010
Сообщений: 406
13.10.2010, 23:04     scanf. Разбиение. #1
Помогите с задачей. Не могу додуматься как это сделать:
С клавиатуры вводится следующий набор символов:
AGENT007:1234567.25
В программе определены три переменные: типов int i, long l и float f. Используя scanf
прочитать и поместить в соответствующие переменные значения: а) 123 и 4567.25; б) 123456
и 7.25.

Подскажите как "рассовать" это все? Вообще работал всегда с Паскалем, казалось, что переходить будет легко, но что-то пока не очень)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2010, 23:04     scanf. Разбиение.
Посмотрите здесь:

C - Функция scanf() C++
C++ scanf в C
scanf ? C++
scanf() C++
C++ printf/scanf
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
14.10.2010, 07:33     scanf. Разбиение. #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Никогда не любил scanf() - ошибки трудно обрабатывать
Если строка "12345" и scanf( "%3d", &i ), то по идее в i прочитается только 123
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.10.2010, 12:30     scanf. Разбиение. #3
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
#include <stdio.h>
 
int main(void)
{
    int i;
    long l;
    float f;
    
    const char *s = "AGENT007:1234567.25";
    int retval;
    
    /* 
        а) 123 и 4567.25;
        б) 123456 и 7.25.
    */
    
    retval = sscanf(s, "%*[^:]:%3d%f", &i, &f);
    
    if (retval == 2)
        printf("%10d, %10.2f" "\n", i, f);
    
    
    retval = sscanf(s, "%*[^:]:%6ld%f", &l, &f);
    
    if (retval == 2)
        printf("%10ld, %10.2f" "\n", l, f);
    
    
    return 0;    
}
Код
[guest@localhost tests]$ ./t
       123,    4567.25
    123456,       7.25
[guest@localhost tests]$
Добавлено через 3 часа 29 минут
C
1
scanf("AGENT007:%3d%f", &i, &f);
тоже
papochka
 Аватар для papochka
32 / 32 / 2
Регистрация: 14.11.2009
Сообщений: 137
14.10.2010, 12:34     scanf. Разбиение. #4
C
1
scanf( "%3d", &i ),
- %3d - 3 знака берётся я так понимаю?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.10.2010, 12:43     scanf. Разбиение. #5
от одного до трёх символов (цифры воспринимаются как символы)
Igor_k
0 / 0 / 0
Регистрация: 03.10.2011
Сообщений: 8
03.10.2011, 15:50     scanf. Разбиение. #6
Объясните пожалуйста код...)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2011, 02:14     scanf. Разбиение.
Еще ссылки по теме:

C++ Функция scanf()
C++ MPI и scanf в С++
C++ Scanf

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.10.2011, 02:14     scanf. Разбиение. #7
Цитата Сообщение от Igor_k
Объясните пожалуйста код...)
а что непонятно ?
Yandex
Объявления
04.10.2011, 02:14     scanf. Разбиение.
Ответ Создать тему
Опции темы

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