Re: [問題] c語言讀檔會當機@@

看板C_and_CPP作者 (辜)時間15年前 (2010/07/13 15:23), 編輯推噓2(2013)
留言15則, 2人參與, 最新討論串2/2 (看更多)
我現在利用記事本創一個dat檔案 內容是 aaaa bbbb 可是我把之前稍做修改的時候,好像結果變成亂碼 理論上英文不會變成亂碼@@ 以下是我的程式碼 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> char Word[ sizeof(char)*5]; int i=0; int main() { FILE *FileIn=fopen("111.dat","rb"); if(FileIn==NULL) { printf("開檔錯誤"); exit(1); } while(!feof(FileIn)) { fread(Word,sizeof(char),1,FileIn); } fclose(FileIn); for(i=0;i<99;i++) printf("%c",Word[i]); system("pause"); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.178.67 ※ 編輯: dann1 來自: 140.138.178.67 (07/13 15:23)

07/13 15:34, , 1F
Word [ sizeof(char)*5 ]; 定義了 5 個字元能存放的空
07/13 15:34, 1F

07/13 15:35, , 2F
間, 但是最後跑迴圈卻是Word[0]~Word[98], 超過配置的
07/13 15:35, 2F

07/13 15:35, , 3F
空間了
07/13 15:35, 3F

07/13 15:38, , 4F
那請問我要怎麼改呢
07/13 15:38, 4F

07/13 15:40, , 5F
你先講你是要一次讀完檔案裡的所有資料, 還是要用其他
07/13 15:40, 5F

07/13 15:41, , 6F
方式, 先想好處理資料的方法, 再來寫程式
07/13 15:41, 6F

07/13 15:43, , 7F
我是要讀一份二進位檔案,讀入矩陣,輸入要刪除的文字
07/13 15:43, 7F

07/13 15:43, , 8F
把文字刪除後再存回去檔案中
07/13 15:43, 8F

07/13 15:46, , 9F
你是要用二維陣列囉? 讀檔是逐字讀?
07/13 15:46, 9F

07/13 15:49, , 10F
我現在是想用一維陣列,不知道這樣存回檔案中會不會有問題
07/13 15:49, 10F

07/13 15:49, , 11F
讀檔比較沒有限制,能完整的放到陣列就好
07/13 15:49, 11F

07/13 16:14, , 12F
在未知檔案大小的情況下, 你需要fseek + tell來算大小
07/13 16:14, 12F

07/13 16:15, , 13F
並且用malloc動態配置記憶體, 一次讀檔就把所有資料讀
07/13 16:15, 13F

07/13 16:16, , 14F
進來(rewind + fread), 這樣就不用設一個固定大小的陣
07/13 16:16, 14F

07/13 16:16, , 15F
列了
07/13 16:16, 15F
文章代碼(AID): #1CF1Hl1E (C_and_CPP)
文章代碼(AID): #1CF1Hl1E (C_and_CPP)