Для этого вы можете использовать спецификатор %[
scanf
, чтобы прочитать все символы до тех пор, пока вы не нажмете ди git, и записать его в list[i]
.
Это оставит вас с завершающим пробелом в list[i]
, но его можно обрезать, если вы этого не хотите.
Вызов scanf
может выглядеть примерно так:
scanf(" %50[^0-9]%d", list[i], &amount[i]);
Обратите внимание на начальный пробел в строке формата, чтобы указать scanf
пропускать пробел (как перевод строки из предыдущей строки), и спецификатор ширины, чтобы не читать больше, чем может поместиться в line[i]
.
Конечно, это мешает вам иметь числа внутри строки, которую вы читаете. Чтобы решить эту проблему, вам нужно go более сложный маршрут.
Например, прочитав всю строку в буфер, а затем найти последний пробел в строке. Затем вы можете скопировать содержимое перед последним пробелом в list[i]
и преобразовать содержимое после в int
значение для amount[i]
.