看板 LinuxDev 關於我們 聯絡資訊
※ 引述《RiverJackson (JACK)》之銘言: : 請問一下 : #include <stdio.h> : #include <string.h> : int main(int argc, char *argv[]) : { : char buf[100]; : FILE *fp=fopen("qq.txt", "a"); : fseek(fp, 50, SEEK_SET); : 這裡的seek_set是指 檔案開頭呢 還是檔案最後 因為用'a' mode open file : memset(buf, '1', 100); : fwrite(buf, 1, 5, fp); : fclose(fp); : return 0; : } : 這裡如果qq.txt已經存在的話 fseek裡面的50好像不管設多少 : fp都是指到qq.txt內容的最後面 假如qq.txt 內容是 ttttt好了 : 程式碼執行後就會變 ttttt11111 所以那個50的指定是沒用的??? : 目的是想說 假設qq.txt改為mtdblock/1 如果執行此程式 是不是就會 : 直接把1寫到mtdblock/2 而且是從mtdblock/2的開頭開始寫 部會從第50開始寫? : 還是我觀念有錯誤 : 這樣講好了 我的目的就是 : : 假設mtdblock/1 範圍是從1到1000好了, 我想在此範圍裏面的500到600 : 全部設為0xff的話 該怎麼做呢?? 然後又不會影響其他範圍內容?? : Thanks~ ^^ 因為最近剛好有看到相關的 code 所以說說看比較好的作法 我還不大了解 mtd 是什麼 不過可以參考看看這種作法 , 因為看你的文章好像只需用到 binary 操作 你可以試著將檔案開成 binary mode 然後用 read 讀入一個 char array 再直接對 array 操作(memset) 然後再開啟 mtd , (用 wb 模式 , 開啟後會將原來檔案設為零) 或試用可以複寫的 mode 用 write 寫回就可以了 參考看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.238.93
RiverJackson:thanks but 如果是要對檔案中的某一段作修改?? 05/05 22:04
Neo1978:用 fopen, mode "r+" 05/08 12:36
RiverJackson:thanks ^^ 05/08 23:00