Re: [問題]請問開檔問題 關於dev

看板LinuxDev作者 (乘著風去旅行)時間16年前 (2008/05/05 20:06), 編輯推噓3(300)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

05/05 22:04, , 1F
thanks but 如果是要對檔案中的某一段作修改??
05/05 22:04, 1F

05/08 12:36, , 2F
用 fopen, mode "r+"
05/08 12:36, 2F

05/08 23:00, , 3F
thanks ^^
05/08 23:00, 3F
文章代碼(AID): #187lXU6f (LinuxDev)
文章代碼(AID): #187lXU6f (LinuxDev)