作者lazybones (懶)
看板C_and_CPP
標題[問題] console 程式的讀檔問題
時間Mon Nov 16 13:21:29 2009
我想寫一個讀檔的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