На самом деле, strncpy
- это , а не - особенно хороший выбор для поставленной задачи.Это всегда увеличивает ваше значение, занимая весь пункт назначения, что, как правило, довольно расточительно (изначально оно было разработано для помещения имен файлов в файловую систему Unix; это хорошо для этого, но не особо).
Я думаю, что я бы использовал sscanf
.Предполагая, что мы всегда хотим копировать от первой цифры до конца строки, вы можете сделать что-то вроде этого:
char street_name[256];
sscanf(input_buffer, "%*[^0-9]%255[^\n]", street_name);
FWIW, часть %*[^0-9]
пропускает символы, пока не достигнет чего-то в диапазоне0-9 (да, я знаю, что это выглядит как регулярное выражение, но scanf и компания тоже это поддерживают).*
в нем означает сканирование, но не назначает то, что находит.%255[^\n]
означает чтение и присваивание до следующей новой строки во вводе или до 255 символов, в зависимости от того, что произойдет раньше.