iT邦幫忙

0

求助大神,關於修改檔案內容

  • 分享至 

  • xImage

請問各位大神們

老闆要我幫忙找找要怎麼寫成一個執行檔

把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)

看更多先前的討論...收起先前的討論...
ant1017 iT邦新手 2 級 ‧ 2022-11-02 11:45:26 檢舉
可以
您好,可以求助大神教學寫法嗎?或是有關鍵字我去爬文也可以,謝謝您QQ
ant1017 iT邦新手 2 級 ‧ 2022-11-02 13:50:57 檢舉
C++的話,檔案輸入輸出可以參考這篇
https://blog.xuite.net/coke750101/coketech/20715490-%E6%AA%94%E6%A1%88%E8%BC%B8%E5%85%A5%E8%88%87%E8%BC%B8%E5%87%BA
sfc507 iT邦新手 4 級 ‧ 2022-11-02 13:51:17 檢舉
你需要的是
1.檔案讀寫(另存新檔/內容修改)
2.字串分割(找目標列/更新目標值)

至於方法就是看個人,你都有位置了應該不難;如果0x0024是某項參數,
若是換檔案那你這支程式就不能再使用了,所以還是建議用搜尋的方式。
謝謝你們~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
wiseguy
iT邦超人 1 級 ‧ 2022-11-02 23:07:48

這如果在 Linux 中,那就只要下個 sed 命令:

sed "/70 B3 D5 16 80/s//80 D3 F6 55 11/" 123.CFG > Z_123.CFG

就好了。
要是在 windows 中,也可以去找 windows 版的 sed.exe,同樣下上面的命令就搞定。

謝謝您~後來我發現老闆不是要這個,所以另發了一個問答QQ

0
JamesDoge
iT邦高手 1 級 ‧ 2023-02-13 08:22:03
#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;
}

我要發表回答

立即登入回答