看板 C_and_CPP 關於我們 聯絡資訊
我想寫一個讀檔的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
MOONRAKER:(1)檢查現在輸出的是什麼字元(2)因為那就是換行 11/16 14:37
lazybones:謝謝 再請問一下 11/16 14:56
lazybones:我現在是用WriteConsoleOutputCharacter()輸出 11/16 14:56
lazybones:怎麼檢查比較好?orz 11/16 14:56
lazybones:或是怎麼不讓換行符號輸出...? 11/16 15:07
※ 編輯: lazybones 來自: 220.133.98.228 (11/16 15:12)
MOONRAKER:檢查那個TextBuf[j]不就得了 11/16 15:43