ファイルを暗号化するプログラムがありますが、末尾に「.safe」という拡張子を追加しています。したがって、最終結果は「file.txt.safe」のようなものになります。
ファイルを復号化しようとすると、ユーザーはファイル名「file.txt.safe」をもう一度入力します。これはcharに保存されます。ここで、「。safe」を削除して、ファイルの名前を元の名前に変更します。
以下を試しましたが、何も起こらないようでエラーはありません。
Decrypt (myFile); //decrypts myFile
char * tmp = myFile;
char * newFile;
newFile = strstr (tmp,".safe"); //search tmp for ".safe"
strncpy (newFile,"",5); //replace .safe with ""
rename (myFile, newFile);
明らかな何かが欠けていることは確かですが、このアプローチがうまくいかない場合は、簡単な方法を探しています。
追加するために編集: (K-balloに対するポスターの応答からモデレーターによってコピーされました)
みんな、ありがとう。私はstd::stringアプローチを採用し、これが機能することを発見しました:
Decrypt(myFile);
string str = myFile;
size_t pos = str.find(".safe");
str.replace(pos,5,"");
rename(myFile, str.c_str());