Спецификация формата % s будет читать строку, пока не будет найден символ пробела.Если вы хотите прочитать все символы до \ n , вы можете сделать % [^ \ n] .Это говорит о прочтении символов до тех пор, пока этот символ отсутствует в наборе, содержащем символ новой строки.Обратите внимание, что завершающий \ n не читается им.Таким образом, окончательное решение будет:
sscanf(line, "%d:%d\t%[^\n]", &num1, &num2, description);