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();
}
對不起,在代碼中的混亂,我有點寫測試。
任何想法將不勝感激。