" На моем cmd я напишу, например," 14 afe afee 50 fafeef a ", и я хочу получить dom.number = 14, dom.street =" afe afee ", dom. number2 = 50 and dom.town = "fafeef a"
" Если я наберу" 25 byll ie street 5093 New York ", я получу только byll ie и New в моем переменные ! * "
Спецификатор формата %s
не перехватывает содержимое строки, разделенное пробелами. Вместо этого используйте %[
.
Также достаточно перехватить целое сначала введите в виде строки fgets
и сохраните ее в буфере, чтобы обеспечить безопасное потребление ввода:
char buf[100];
fgets(buf, sizeof(buf), stdin);
Затем выполните синтаксический анализ строки с помощью sscanf()
:
sscanf(buf,"%d %[^0-9]%d %[^0-9\n]",&dom.number, dom.street, &dom.number2, dom.town ) ;
Не забудьте проверить возвращаемое значение sscanf()
:
if (sscanf(buf,"%d %[^0-9]%d %[^0-9\n]",&dom.number, dom.street, &dom.number2, dom.town ) != 4)
{
fprintf(stderr ,"Error at scanning the input string!");
}