你好,我的代码问题在这里.
LPCSTR mergeString(LPCSTR firstString, std::string secondString)
{
string convertedString = ConvertString(firstString);
LPCSTR mergedString;
int i = convertedString.size();
convertedString.insert(i, secondString);
mergedString = (convertedString.c_str());
return mergedString;
}
void GetFiles(LPCSTR path)
{
WIN32_FIND_DATA File_Data;
LPCSTR lPath = mergeString(path,"\\*.txt");
FindFirstFile(lPath, &File_Data);
wcout << File_Data.cFileName;
}
Run Code Online (Sandbox Code Playgroud)
你传入你想要在GetFiles(LPCSTR路径)中使用的路径然后我使用mergestring函数将路径与扩展(\*.txt)合并在一起所有工作,除非它返回LPCSTR然后它只是很多奇怪的人物,我不知道为什么或这是一个更好的方法来做到这一点?
回答:
我必须为解密创建一个单独的函数,使用"rb"打开加密文件,然后在加密函数中使用"wb"将加密数据写入文件.
我的Xor加密出了问题.加密文件中的数据时,加密工作正常,但当我尝试解密时,加密失败.问题是该fgetc函数只读取第一行和第二行,并且无法解密第二行的50%.
例:
正常:
This is a text, This is a text
This is a text, This is a text
Run Code Online (Sandbox Code Playgroud)
加密:
a¦_ÖÞ`×ûù‡ûÛ(‹Pñ»FŒ§U®7!¼ªãŸ<çϱ\Î8ðs6Öã`GÒFAªÓV/Ç1t
Run Code Online (Sandbox Code Playgroud)
解密:
This is a text, This is a text
This is a text, ±Åãl«åé»–o„ F
Run Code Online (Sandbox Code Playgroud)
我用断点检查了代码,发现问题是fgetc在第二行之后停止读取文件,但我不知道为什么.也许我的算法有问题.
码:
int encrypt_file(const char *filename, const char *key)
{
int i = 0;
size_t key_len = strlen(key);
size_t key_count = 0;
size_t num_bytes = 0;
int *data = NULL;
int byte …Run Code Online (Sandbox Code Playgroud)