[問題]一個關於開檔讀檔的問題

看板C_and_CPP (C/C++)作者 (陽光棕梠)時間12年前 (2014/03/14 01:31), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev C++ 以下為程式碼: FILE *fptr; int bytes; char str[512]; fptr = fopen ("c:\\prog\\out.txt", "r"); while(!feof(ftr)) { bytes = fread(str, sizeof(char), 512, fptr); printf("%s\n", str); } fclose(fptr); ************************************************ FILE *fptr; int bytes; char str[512]; fptr = fopen ("c:\\prog\\out.txt", "r"); if(!feof(ftr)) { bytes = fread(str, sizeof(char), 512, fptr); printf("%s\n", str); } fclose(fptr); 上述兩個程式碼只差在判斷檔案結束的地方一個用while,一個用if 但是這兩個都能跑出相同結果. 想請問讀檔時是逐一個位元讀取還是直接讀出所設定的位元數(512)? 也請問是用while的方式正確還是if的方式正確! 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.3.22 ※ 編輯: hbzncu 來自: 180.176.3.22 (03/14 01:32) ※ 編輯: hbzncu 來自: 180.176.3.22 (03/14 01:33)

03/14 01:33, , 1F
很不幸的是,你寫的這兩份 code 都不算正確.
03/14 01:33, 1F

03/14 01:34, , 2F
你可以試著將該檔存長一點 (數十KB) 再跑跑看..
03/14 01:34, 2F
可以請問一下錯誤在甚麼地方嗎? ※ 編輯: hbzncu 來自: 180.176.3.22 (03/14 01:42)

03/14 22:35, , 3F
在 printf 前沒塞結束字元,這是最明顯的。
03/14 22:35, 3F

03/16 01:58, , 4F
同意樓上, 拿個大一點的檔案來試試看你就知道了
03/16 01:58, 4F
文章代碼(AID): #1J8Ujowv (C_and_CPP)
文章代碼(AID): #1J8Ujowv (C_and_CPP)