のドキュメントを読んでいるときに、小さな詳細が目に留まり_splitpath_s()
ました。最初のパラメーターでディスク項目のパス (例: C:\ Temp \MyFile.exe) を取得し、それをdrive、directory、folder、およびextension名に分割します。ただし、奇妙なことに、3番目のパラメーターでドライブの名前を保持する文字列バッファーの長さを要求します。
私の知る限り、ドライブ文字は 2 文字の文字列に過ぎません。A:
、、、などのようにB:
、文字の後にセミコロンが続きC:
ます。したがって、常に 2 文字の文字列である必要があります。しかし、もしそうなら、なぜ_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
);