Небольшая деталь попалась на глаза во время чтения документации _splitpath_s()
. Он принимает путь диска пункта (например .; C: \ Temp \ MyFile.exe) в 1-м параметра, а затем делит его на диск, каталог, папку и расширение имен. Однако, странно, он запрашивает длину строкового буфера, который будет содержать имя диска в обратном направлении в своем параметре 3 rd.Почему _splitpath_s() принимает строковый буфер произвольного размера для возврата буквы диска?
Насколько я знаю, буква диска может быть только двухбуквенной строкой; письмо, за которым следует точка с запятой, например A:
, B:
, C:
и т. д. Поэтому во всех случаях она всегда должна быть двухсимвольной. Но если да, то почему _splitpath_s()
спрашивают длину буквы диска? Есть ли какой-нибудь случай, в котором письмо с буквой может быть в другом формате? Какая проблема возникла бы в худшем случае, если бы она не просила о ее длине и просто предположила, что она равна 2?
errno_t _splitpath_s(
const char * path,
char * drive,
size_t driveNumberOfElements,
char * dir,
size_t dirNumberOfElements,
char * fname,
size_t nameNumberOfElements,
char * ext,
size_t extNumberOfElements
);
Для согласованности? –