[問題] console 程式的讀檔問題
我想寫一個讀檔的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
11/16 14:37, 1F
→
11/16 14:56, , 2F
11/16 14:56, 2F
→
11/16 14:56, , 3F
11/16 14:56, 3F
→
11/16 14:56, , 4F
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
11/16 15:43, 6F