2
我是编程新手,有时甚至我写的东西对我来说仍然很神秘。这是我第一次在互联网上寻求帮助。读取/写入文件,字节丢失,字符溢出可能是字符溢出
我在这里有一个问题,我现在还没有能够解决它一段时间。
这就是我想做的事:
按字节读取字节从文件到一个载体,修改字节并将其写回。
这是发生了什么:
所有加密的东西似乎工作,但不知何故,几经这些操作的文件的一部分去错过的。
在字节修改过程中,我使用字符溢出,这意味着我将一些随机数添加到我的矢量的每个部分,并将其作为整体写回。
在我看来,这可能是某种算术溢出问题,我不知道。
顺便说一句,我使用Qt SDK和Windows环境,以防万一。
下面的代码片段:
void crypt(string * password,string filename, int sign){
vector<char> stack;
ifstream is;
is.open(filename.c_str());
char c;
for (int i = 0; !is.eof(); i++){
is >> noskipws >> c;
stack.push_back(c);
}
stack.pop_back();
is.close();
int code = 0;
double x;
char method = 0;
int var;
for (int i = 0; i < password->size(); i++)
code += password->at(i);
for (int i = 0; i < (stack.size()); i++){
// some unrelated stuff skipped
if (sign == 1)code += stack[i];
stack[i] += var*method*sign; //<----this might be the cause!
if (sign == -1)code += stack[i];
method = 0;
}
ofstream os;
os.open(filename.c_str());
for (int i = 0; i < stack.size(); i++){
os << noskipws << stack[i];
}
os.flush();
os.close();
}
对不起,在代码中的混乱,我有点写测试。
任何想法将不胜感激。