[問題] console 程式的讀檔問題

看板C_and_CPP作者 (懶)時間16年前 (2009/11/16 13:21), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
我想寫一個讀檔的console程式 希望他能在螢幕上特定的位置開始作輸出 (輸出的排版希望跟檔案中一樣) 我是用fread()讀檔 但是有兩個問題 1.輸出在螢幕時 該換行的地方不會自動換行 -> 如何知道該換行? 2.原本應該是換行(或有\t)的位置會出現奇怪的符號 -> 怎麼不讓符號出現? (ascii = 10或13) 要是改用fgets()讀檔 就剩下第2個問題 請問該如何解決? void main() { COORD OutputCoord = { 0, 1 }; //其他參數宣告略 if( (fp = fopen(cFileName, "r+b") ) != NULL ) { lFileSize = FileSize(fp); //lFileSize:檔案大小 ReadTextContent(fp, TextBuf, lFileSize); for(int j = 0; j < ROWS_PER_SCREEN; j++) { WriteConsoleOutputCharacter(hConText, TextBuf[j], CHAR_PER_LINE, OutputCoord, &cCharsWritten); OutputCoord.Y++; } fclose(fp); } return; } void ReadTextContent(FILE *fp, char TextBuf[BUF_LINE_COUNT][CHAR_PER_LINE], long lFileSize) { long lRemainSize = 0; for(int i = 0; i < BUF_LINE_COUNT; i++) //buffer放120列 { lRemainSize = lFileSize - ftell(fp); if(lRemainSize >= CHAR_PER_LINE) fread( TextBuf[i], sizeof( char ), CHAR_PER_LINE, fp ); else { fread( TextBuf[i], sizeof( char ), lRemainSize, fp ); break; } } return; } -- ╔╮ ╭═╦╮╭═╦╗╮ ╮╔══╮╭═╦╮╮ ╔╮╔══╮╭══╮ ╠╣ ╠═╬╣╭╬╩╯╰╦╦╯╠═╦╮║ ╠╣║║╠╣╠╣ ╰═╦╮ ╠╣ ╭║ ╠╣║╰╔╗ ╠╣ ║ ╠╣║ ╠╣║╰╠╣║╰╔╗║ ╠╣ ╰╩═╯╰ ╰╝╚═╩╯ ╰╝ ╚═╩╯╰═╩╯╰ ╰╝╚═╩╯╰═╩╯ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.98.228

11/16 14:37, , 1F
(1)檢查現在輸出的是什麼字元(2)因為那就是換行
11/16 14:37, 1F

11/16 14:56, , 2F
謝謝 再請問一下
11/16 14:56, 2F

11/16 14:56, , 3F
我現在是用WriteConsoleOutputCharacter()輸出
11/16 14:56, 3F

11/16 14:56, , 4F
怎麼檢查比較好?orz
11/16 14:56, 4F

11/16 15:07, , 5F
或是怎麼不讓換行符號輸出...?
11/16 15:07, 5F
※ 編輯: lazybones 來自: 220.133.98.228 (11/16 15:12)

11/16 15:43, , 6F
檢查那個TextBuf[j]不就得了
11/16 15:43, 6F
文章代碼(AID): #1B0E5Sm0 (C_and_CPP)