Нет, вы не можете сделать это в одной строке, а количество строк исходного кода чаще всего не имеет значения.Единственное, что имеет значение, это безопасность, удобочитаемость и производительность.strncpy
и atoi
являются небезопасными функциями.
Однако правильный способ сделать это очень похож:
int strn_to_int (const char* src, size_t n)
{
char str [LARGE_ENOUGH];
memcpy(str, src, n);
str[n] = '\0';
return strtol(str, NULL, 10);
}
...
int n = strn_to_int (&MY_STRING[INT_START], INT_END-INT_START);