sunjob 1 May 4, 2018 Posted May 4, 2018 (edited) · Report post 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 Edited May 4, 2018 by sunjob Quote Share this post Link to post Share on other sites More sharing options...
megajohn 19 May 4, 2018 Posted May 4, 2018 · Report post scanf ("%u%,%u",&A,&B); пишите scanf ("%u%%,%u",&A,&B); Quote Share this post Link to post Share on other sites More sharing options...
dii# 0 May 4, 2018 Posted May 4, 2018 · Report post uint8_t A,B; ... scanf ("%u%,%u",&A,&B); ... вообще, тут, видимо, не стоит рассчитывать на нормальное поведение ) что скажет следующая строчка: [code]printf("%u %u %u", sizeof(unsigned), (unsigned)&A, (unsigned)&B); ? Quote Share this post Link to post Share on other sites More sharing options...
sunjob 1 May 4, 2018 Posted May 4, 2018 (edited) · Report post спасибо я по невнимательности вставил код, которым "уже всяко-разно" понаэкспериментировал ...:) (он естественно весь испахабленный) невнимательность плюс желание сэкономить (использовать 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); } Edited May 5, 2018 by sunjob Quote Share this post Link to post Share on other sites More sharing options...