Потому что между
инлайновыми элементами (inline, inline-block) есть отступы/пробелы. Можете
просто для теста внутри label написать оба div-а в одну строку, тогда второй не будет переноситься (хотя в разных браузерах работает по разному):
<label>
<div class="file_info"></div><div class="inp_file">Выбрать файл</div>
<input type="file" name="file" accept="text/*" id="code">
</label>
Для решения данной проблемы можете:
1) Добавить родительскому элементу, то бишь тегу label
label {
white-space: nowrap;
}
2) Использовать
flex (что имхо в разы удобнее и лучше):
label {
display: flex;
flex-wrap: wrap;
}