Проблема в вашем коде в аргументах функции sscanf
. Для этого требуется адреса всех переменных, которые являются «целями» для соответствующих полей формата (но чтение в char[]
строках отличается, так как имя массива будет распадаться до указатель при использовании в качестве аргумента функции).
Итак, в вашем случае, чтобы прочитать два целочисленных элемента структуры, вы должны использовать это:
test = sscanf(buff, "%d%d", &array[counter].start, &array[counter].end);
Примечание 1 : Кроме того, вам не нужен оператор &
для аргумента buff
, так как он будет затухать, как упомянуто выше!
Примечание 2: Поскольку .
(оператор доступа к элементу структуры) имеет более высокий приоритет , чем &
(оператор адреса), выражение &array[counter].start
совпадает с &(array[counter].start)
- но вы можете предпочесть последнее, более явное код, так как этот может прояснить ситуацию для других, чтобы ее можно было прочитать и понять.
Не стесняйтесь просить дальнейших разъяснений и / или объяснений.