sunjob 0 4 мая, 2018 Опубликовано 4 мая, 2018 (изменено) · Жалоба avr-gcc проблема с scanf() добрый день вопрос применительно к avr-gcc/atmel-toolchain код проверялся и пытался по всякому ... (ни шмагли никак :о) принять одно число для scanf() - не проблема проблемы начинаются, когда надо принять два числа: - не принимает "оба" числа, либо если принимает (первый пример), то "первое" число = 0 - при "неправильном" типе - уходит в зацикливание судя по скудным высказываниям по поводу scanf() - для avr-gcc это "нормальное поведение" и "все на это уже давно забили" высказываемся, можно с кодом/примерами, можно просто "ключевые слова" или пофилософствовать... спасибо uint8_t A,B; while(1) { DEV = -1, SIG = -1; scanf ("%u%,%u",&A,&B); printf ("A='%u', B='%u' \n",A,B); } выхлоп // // scanf ("%u%*c%u",&A,&B); // input: '1+2' // A='0', B='2' // // scanf ("%u% %u",&A,&B); // input: '1 2' // A='1', B='65535' A='2', B='65535' // // scanf ("%u%,%u",&A,&B); // input "1,2" // A='1', B='65535' A='65535', B='65535' A='65535', B='65535' ... loop ... зацикливание ... - avr-gcc-4.9.2 / atmel-toolchain 3.4.2 and 3.5.4 / linux - avr-studio-4.19 / win_xp - variation with key-library (-Wl,-u,vfprintf -lprintf_min, -Wl,-u,vfprintf -lprintf_flt, -Wl,-u,vfscanf -lscanf_min, -Wl,-u,vfscanf -lscanf_flt...) - build witn makefile & shell-script Изменено 4 мая, 2018 пользователем sunjob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 8 4 мая, 2018 Опубликовано 4 мая, 2018 · Жалоба scanf ("%u%,%u",&A,&B); пишите scanf ("%u%%,%u",&A,&B); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dii# 0 4 мая, 2018 Опубликовано 4 мая, 2018 · Жалоба uint8_t A,B; ... scanf ("%u%,%u",&A,&B); ... вообще, тут, видимо, не стоит рассчитывать на нормальное поведение ) что скажет следующая строчка: [code]printf("%u %u %u", sizeof(unsigned), (unsigned)&A, (unsigned)&B); ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sunjob 0 4 мая, 2018 Опубликовано 4 мая, 2018 (изменено) · Жалоба спасибо я по невнимательности вставил код, которым "уже всяко-разно" понаэкспериментировал ...:) (он естественно весь испахабленный) невнимательность плюс желание сэкономить (использовать 8бит), умные люди помогли рабочий код uint8_t A,B; while(1) { A = -1, B = -1; scanf ("%hhu%hhu",&A,&B); printf ("A='%u', B='%u'\n", A,B); // // or // scanf ("%" SCNu8 "%" SCNu8 , &A,&B); printf ("A='%" PRIu8 "', B='%" PRIu8 "'\n", A,B); } Изменено 5 мая, 2018 пользователем sunjob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться