long long int scanf

Тема в разделе "LANGS.C", создана пользователем Ronin_, 1 янв 2018.

Метки:
  1. Ronin_

    Ronin_ Active Member

    Публикаций:
    1
    Регистрация:
    24 дек 2016
    Сообщения:
    252
    Всех приветствую!

    Как вы обрабатываете длинные числа long long int при помощи scanf в Си?
    Компилятор gcc.

    Можно конечно создать переменную типа char и потом заюзать преобразование при помощи функции atoll.

    На плюcах я не заморачиваюсь, беру потоки cin и cout.

    printf при этом "%lld" понимает, а вот scanf начинает выбрасывать ворнинги.

    Код (Text):
    1. gcc -std=c99 -Wall -s -O2 -o lli.exe lli.c
    2. long.c: In function 'main':
    3. long.c:8:8: warning: unknown conversion type character 'l' in format [-Wf
    4.  
    5.   scanf("%lld", &li);
    6.         ^
    7. long.c:8:8: warning: too many arguments for format [-Wformat-extra-args]
    Дополнительно юзаю флаг -std=c99, так как поддержка модификатора l появилась в c99.
     
  2. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Юзайте низкий уровень или хоть прочтите http://www.c-cpp.ru/content/scanf
    вообще я бы сделал через пайпы
     
  3. Ronin_

    Ronin_ Active Member

    Публикаций:
    1
    Регистрация:
    24 дек 2016
    Сообщения:
    252
    Читал на cppreference en. Низкий левел асм что ли? Не, лучше уж тогда потоки плюсов заюзать и не извращаться.
     
  4. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    При чем асм и низкий левел?
    Я имел ввиду низкий уровень программирования, потоки я не пойму при чем здесь.
    Я говорил про натив или просто пайпы, для вас лично пайп - именованный канал там.
    ADD: я понял про потоки, но нафиг надо они либы за собой потянут лишние, вес и etc
     
    Последнее редактирование: 1 янв 2018
  5. Ronin_

    Ronin_ Active Member

    Публикаций:
    1
    Регистрация:
    24 дек 2016
    Сообщения:
    252
    При том что придумывать ничего не нужно на плюсах, такой же подход интересует в С.
     
  6. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Выше прочтите что я написал
     
  7. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    на чистом си - юзайте норм Апишки
    или я хз, рантайм - зло
     
  8. CurryHowardIsomorphism

    CurryHowardIsomorphism Member

    Публикаций:
    0
    Регистрация:
    13 май 2017
    Сообщения:
    97
  9. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Вполне себе легальный код.
     
  10. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Ronin_,

    Это всё опенсорсное и подробно описано.

    RET,

    > я бы сделал через пайпы

    Пайпы значит.. профайл по ним снимите для начала, ну что бы понять какие это тормоза. Данный механизм давно уже устарел.
     
  11. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Indy_,
    а printf к примеру как и вообще весь функционал stdin/stdout по вашему что юзает? + рантаймовского говна за собой тянуть? можно написать чисто самому на пайпах.
     
    Последнее редактирование: 4 янв 2018
  12. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    кстати scanf("%llf", &li); или scanf("%lf", &li); попробуйте
     
  13. Ronin_

    Ronin_ Active Member

    Публикаций:
    1
    Регистрация:
    24 дек 2016
    Сообщения:
    252
    5.1.0
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    RET,

    > а printf к примеру как и вообще весь функционал stdin/stdout по вашему что юзает?

    Механизм выбирается в зависимости от дебаг порта. Это прерывание/исключение либо сервис. Пайпы(каналы) механизм столь медленный, профайл медленее на порядки чем у lpc.

    Прекращайте курить дурь и начните курить матчасть наконец.