作者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
1F:→ MOONRAKER:(1)检查现在输出的是什麽字元(2)因为那就是换行 11/16 14:37
2F:→ lazybones:谢谢 再请问一下 11/16 14:56
3F:→ lazybones:我现在是用WriteConsoleOutputCharacter()输出 11/16 14:56
4F:→ lazybones:怎麽检查比较好?orz 11/16 14:56
5F:→ lazybones:或是怎麽不让换行符号输出...? 11/16 15:07
※ 编辑: lazybones 来自: 220.133.98.228 (11/16 15:12)
6F:→ MOONRAKER:检查那个TextBuf[j]不就得了 11/16 15:43