megajohn 3 12 ноября, 2015 Опубликовано 12 ноября, 2015 · Жалоба есть строка "abc;123;" не получается распарсить, пробовал и "%[^;]s%d;" и "%[^;]s;%d;" как задать правильно строку форматирования ? ( менять ';' на ' ' ой как не хочется, хоть и работает ) void scanf_test( void ) { char src[] = "abc;123;"; char dest_str[4]; int dest_int; int sscanf_ret; sscanf_ret = sscanf( src, "%s;%d;", dest_str, &dest_int ); printf( "sscanf_ret1=%d" "\n", sscanf_ret ); sscanf_ret = sscanf( src, "%[^;]s%d;", dest_str, &dest_int ); printf( "sscanf_ret2=%d" "\n", sscanf_ret ); sscanf_ret = sscanf( src, "%[abc]s%d;", dest_str, &dest_int ); printf( "sscanf_ret3=%d" "\n", sscanf_ret ); sscanf_ret = sscanf( src, "%[^;]s;%d;", dest_str, &dest_int ); printf( "sscanf_ret4=%d" "\n", sscanf_ret ); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 13 ноября, 2015 Опубликовано 13 ноября, 2015 (изменено) · Жалоба не все компиляторы одинаково полезны (ИМХО). Приведите выдачу Вашего варианта. И что за среда исполнения. Для тестового примера место под строку dest_str отведено без запаса (в данном случае я бы сделал не меньше чем оигинальная строка) - соответственно результат может быть вообще любым. Интересно использовать форматный спецификатор %n, видно где остановился парсер в тот или иной момент. Изменено 13 ноября, 2015 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться