long long int scanf

Discussion in 'LANGS.C' started by Ronin_, Jan 1, 2018.

  1. Ronin_

    Ronin_ Active Member

    Blog Posts:
    1
    Joined:
    Dec 24, 2016
    Messages:
    252
    Всех приветствую!

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

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

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

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

    Code (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

    Blog Posts:
    17
    Joined:
    Jan 5, 2008
    Messages:
    789
    Location:
    Jabber: darksys@sj.ms
    Юзайте низкий уровень или хоть прочтите http://www.c-cpp.ru/content/scanf
    вообще я бы сделал через пайпы
     
  3. Ronin_

    Ronin_ Active Member

    Blog Posts:
    1
    Joined:
    Dec 24, 2016
    Messages:
    252
    Читал на cppreference en. Низкий левел асм что ли? Не, лучше уж тогда потоки плюсов заюзать и не извращаться.
     
  4. RET

    RET Well-Known Member

    Blog Posts:
    17
    Joined:
    Jan 5, 2008
    Messages:
    789
    Location:
    Jabber: darksys@sj.ms
    При чем асм и низкий левел?
    Я имел ввиду низкий уровень программирования, потоки я не пойму при чем здесь.
    Я говорил про натив или просто пайпы, для вас лично пайп - именованный канал там.
    ADD: я понял про потоки, но нафиг надо они либы за собой потянут лишние, вес и etc
     
    Last edited: Jan 1, 2018
  5. Ronin_

    Ronin_ Active Member

    Blog Posts:
    1
    Joined:
    Dec 24, 2016
    Messages:
    252
    При том что придумывать ничего не нужно на плюсах, такой же подход интересует в С.
     
  6. RET

    RET Well-Known Member

    Blog Posts:
    17
    Joined:
    Jan 5, 2008
    Messages:
    789
    Location:
    Jabber: darksys@sj.ms
    Выше прочтите что я написал
     
  7. RET

    RET Well-Known Member

    Blog Posts:
    17
    Joined:
    Jan 5, 2008
    Messages:
    789
    Location:
    Jabber: darksys@sj.ms
    на чистом си - юзайте норм Апишки
    или я хз, рантайм - зло
     
  8. CurryHowardIsomorphism

    CurryHowardIsomorphism Member

    Blog Posts:
    0
    Joined:
    May 13, 2017
    Messages:
    97
  9. SadKo

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

    Blog Posts:
    8
    Joined:
    Jun 4, 2007
    Messages:
    1,610
    Location:
    г. Санкт-Петербург
    Вполне себе легальный код.
     
  10. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    Ronin_,

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

    RET,

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

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

    RET Well-Known Member

    Blog Posts:
    17
    Joined:
    Jan 5, 2008
    Messages:
    789
    Location:
    Jabber: darksys@sj.ms
    Indy_,
    а printf к примеру как и вообще весь функционал stdin/stdout по вашему что юзает? + рантаймовского говна за собой тянуть? можно написать чисто самому на пайпах.
     
    Last edited: Jan 4, 2018
  12. RET

    RET Well-Known Member

    Blog Posts:
    17
    Joined:
    Jan 5, 2008
    Messages:
    789
    Location:
    Jabber: darksys@sj.ms
    кстати scanf("%llf", &li); или scanf("%lf", &li); попробуйте
     
  13. Ronin_

    Ronin_ Active Member

    Blog Posts:
    1
    Joined:
    Dec 24, 2016
    Messages:
    252
    5.1.0
     
  14. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Joined:
    Apr 29, 2011
    Messages:
    4,788
    RET,

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

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

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