добрый день
вопрос применительно к avr-gcc/atmel-toolchain
код проверялся и пытался по всякому ... (ни шмагли никак :о)
принять одно число для scanf() - не проблема
проблемы начинаются, когда надо принять два числа:
- не принимает «оба» числа, либо если принимает (первый пример), то «первое» число = 0
- при «неправильном» типе - уходит в зацикливание
судя по скудным высказываниям по поводу scanf() - для avr-gcc это «нормальное поведение» и «все на это уже давно забили»
высказываемся, можно с кодом/примерами, можно просто «ключевые слова» или пофилософствовать...
спасибо
int8_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