我有一个加密文件的程序,但在末尾添加了扩展名“.safe”。所以最终结果类似于“file.txt.safe”
当我去解密文件时,用户再次输入文件名:“file.txt.safe”,它保存为一个字符。现在我想删除“.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());