1

のドキュメントを読んでいるときに、小さな詳細が目に留まり_splitpath_s()ました。最初のパラメーターでディスク項目のパス (例: C:\ Temp \MyFile.exe) を取得し、それをdrivedirectoryfolder、および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
);
4

1 に答える 1