PathRenameExtension

新しい拡張子でファイル名の拡張子を取り替えます。

書式

BOOL PathRenameExtension(
    LPTSTR pszPath,
    LPCTSTR pszExt
);

【インクルードファイル】

shlwapi.h

【必要追加ライブラリ】

shlwapi.lib

戻り値

0以外 成功
0 変換失敗。新しいパスの文字列がMAX_PATHを超えた。

引数

pszPath

拡張子を取り替える最大長MAX_PATHのNULL文字で終了する文字列へのポインタ。

pszExt

「.」を含む変換後の拡張子

解説

新しい拡張子でファイル名の拡張子を取り替えます。
もしファイル名が拡張子を含まなければ、拡張子は、文字列の末尾に付加されます。
具体的には最後の「.」以降を第二引数に置き換えます。 第二引数文字列は先頭が「.」である必要があります。

使用例

〈サンプルプログラム〉

#include <stdio.h>
#include <shlwapi.h>

#pragma comment(lib, "shlwapi.lib")

int main()
{
    char Path[MAX_PATH] = "c:\\doc\\hello.bak";
    char *Ext = ".txt";
    printf("引数に設定したパス  : %s\n", Path);
    printf("引数に設定した拡張子: %s\n", Ext);
    PathRenameExtension(Path, Ext);
    printf("変換後の文字列      : %s\n\n", Path);

    char Path2[MAX_PATH] = "c:\\doc\\hello.bak.bak";
    char *Ext2 = ".hoge";
    printf("引数に設定したパス  : %s\n", Path2);
    printf("引数に設定した拡張子: %s\n", Ext2);
    PathRenameExtension(Path2, Ext2);
    printf("変換後の文字列      : %s\n\n", Path2);

    char Path3[MAX_PATH] = "c:\\doc\\hello";
    char *Ext3 = ".bak";
    printf("引数に設定したパス  : %s\n", Path3);
    printf("引数に設定した拡張子: %s\n", Ext3);
    PathRenameExtension(Path3, Ext3);
    printf("変換後の文字列      : %s\n\n", Path3);

    return 0;
}

〈出力〉

引数に設定したパス  : c:\doc\hello.bak
引数に設定した拡張子: .txt
変換後の文字列      : c:\doc\hello.txt

引数に設定したパス  : c:\doc\hello.bak.bak
引数に設定した拡張子: .hoge
変換後の文字列      : c:\doc\hello.bak.hoge

引数に設定したパス  : c:\doc\hello
引数に設定した拡張子: .bak
変換後の文字列      : c:\doc\hello.bak

対応情報

  DLL Version:shlwapi.dll version 4.71 以上。
  Windows NT/2000:Windows NT 4.0/2000 Internet Explorer 4.0以降
  Windows 95/98:Windows 95/98 Internet Explorer 4.0以降