請問各位大神們
老闆要我幫忙找找要怎麼寫成一個執行檔
把CFG檔案裡面的一串數字修改
我們都是手動打開檔案,去修改這個檔案的數字
例如
0x0024 : 6 : byte : 70 B3 D5 16 80 ←(這串數字在整個文字檔裡面的第24列,要修改的文字是70 B3 D5 16 80是25~38行)
(例70 B3 D5 16 80修改成80 D3 F6 55 11)這樣,其他不變,
那有辦法做出執行檔跳出來,我只要輸入數字,它就會幫我把這個檔案內容修改並另存新檔嗎?
例如123.CFG儲存成Z_123.CFG
感謝各位..
(其實用文字檔打開不是可以直接取代嗎?不知道老闆為什麼一定要寫一個程式改QQ)
這如果在 Linux 中,那就只要下個 sed 命令:
sed "/70 B3 D5 16 80/s//80 D3 F6 55 11/" 123.CFG > Z_123.CFG
就好了。
要是在 windows 中,也可以去找 windows 版的 sed.exe,同樣下上面的命令就搞定。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
string filename;
string line;
int line_num = 0;
bool found = false;
string new_num;
// 輸入要修改的檔案名稱
cout << "請輸入CFG檔案名稱:";
cin >> filename;
// 輸入要修改的數字
cout << "請輸入新的數字:";
cin >> new_num;
// 打開檔案
ifstream input_file(filename);
if (!input_file) {
cerr << "無法打開檔案 " << filename << endl;
return 1;
}
// 逐行讀取檔案
while (getline(input_file, line)) {
line_num++;
if (line.find("0x0024") != string::npos) {
// 找到指定的行
found = true;
line.replace(25, 13, new_num);
}
}
input_file.close();
if (!found) {
cerr << "未找到指定的行" << endl;
return 1;
}
// 儲存修改後的內容到新檔案
string new_filename = "Z_" + filename;
ofstream output_file(new_filename);
if (!output_file) {
cerr << "無法儲存檔案 " << new_filename << endl;
return 1;
}
output_file << line;
while (getline(input_file, line)) {
output_file << endl << line;
}
output_file.close();
cout << "已將檔案 " << filename << " 中的指定數字修改並存儲為 " << new_filename << endl;
return 0;
}