2012-02-29 6 views
0

どのように私は `Windowsのファイルパスをc: abc efg mmm.txtからc:\ abc \ mm.txtに変換する必要がありますか?

Cの形をしているファイルのパスに変更します:\ ABC \ EFG \ mmm.txt

にC:\\ ABCを\\ mm.txt?

と私はのは、.DOCを言わせて、

に拡張 .TXTを変更するために何ができるのでしょうか?

` EDIT:

これらのパスは、単に例示のためのものです。

実際のパスはドライブ文字と任意の数のサブディレクトリで構成されています。また、ファイル拡張子は任意の形式にすることができます。

+0

入力を出力に変換するルールはありますか?同様に出力は "c:\\"の1レベル下にあり、名前には最大2つの繰り返し文字が含まれますか? – perreal

+0

そのようなルールはありません。私はちょうど最初の形式のファイルパスリストを持っていましたが、vc2010はそのパスを理解して開くことができませんでした。だから私は2番目の形式に変換する必要があります。それはすべてです – John

+0

パスはドライブレター、2つのディレクトリ、3文字のファイル名、常に.txtファイル名で構成されていますか?削除するファイル名は1番目または最後の(または中央の)ファイル名ですか? – pmg

答えて

1

あなたの仕事は明確ではありません。

char* p = str; 
char target[MAX_PATH + 1]; // or some other way to be sure it will hold the transformed string 
char* t = target; 

while (*p) { 
    char ch = *p++; 
    if (ch == '\\') 
    *t++ = '\\'; 
    *t++ = ch; 
} 

*t = '\0'; 

これは、バックスラッシュを複製します:あなたが唯一のバックスラッシュを複製したいし、それが純粋なCであり、あなたが(だけつまりASCII)のワイド文字を持っていない場合は、の線に沿って何かを行うことができます。拡張機能を置き換えるには、簡単にするために、int len = strlen(str);を使用して拡張子を検出することができます(strの最後の文字をチェックするのと同じくらい簡単です)。完了したらwhileの条件をwhile(p - str < len - 3)で置き換えてからstrcat(target, "doc");

関連する問題