English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

system("cls")這是把整個螢幕清空
那如果我只要清空一行,要用哪個函式?

2007-01-17 00:45:35 · 4 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

4 個解答

dos下當然是可以,除了直接定址外,以前 Turbo C 就有提供這樣的函數(定義在 conio.h)

在 Windows 的 Console mode裡可以用 GetConsoleScreenBufferInfo 來取得buffer,再用FillConsoleOutputCharacter就可以做到你想要的功能

#include
#include
#include
#include

void DelLine(int y)
{
HANDLE hOutput;
CONSOLE_SCREEN_BUFFER_INFO sbi;
DWORD len, nw;
COORD cd = {0, y};

hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hOutput, &sbi);
len = sbi.dwSize.X;
FillConsoleOutputCharacter(hOutput,_T(' '),len,cd,&nw);
}

int main(int argc, char *argv[])
{
int i;

for(i = 0; i < 20; i ++ )
printf("Line %02d !!!\n", i);
printf("press a key to Del Line 3\n");
getch();
DelLine(3);
system("pause");
return 0;
}

2007-01-17 16:27:10 · answer #1 · answered by elastic 7 · 0 0

可以利用 ANSI.sys escape sequence 作到:
看一下這一篇,有告訴你有那一些 secape sequence 可以用…
http://www.delmar.edu/Courses/CIS415L/ANSIsys.htm
http://www.evergreen.edu/biophysics/technotes/program/ansi_esc.htm
基本上,你的要求很簡單,就是先把你的 cursor 移回第一行,再 erase 後面所有的字元就好…
在 Windows Console 下要用 ANSI.sys 要作一些設定,看一下這一篇:
http://www.evergreen.edu/biophysics/technotes/program/ansi_esc.htm#notes
(Windows NT 的 cmd.exe 不支援 ANSI.sys,要在 Windows NT 下跑 有用到 ANSI.sys escape sequence 的話,要用 command.exe)

2007-01-17 06:19:13 · answer #2 · answered by Dave 7 · 0 0

DOS底下要單獨清除一行,是一定可以的,不過C or C++沒有函數可以使用,DOS命令也沒有.

如果要,必須自己寫程式,程式並不困難............

2007-01-17 04:18:07 · answer #3 · answered by TWSOFT 3 · 0 0

在 dos 底下是沒辦法的
除非你用 Graphic Mode
但是
如果要用 Graphic Mode
那直接用 Visual 就好了
功能還更多更方便
如果有問題, 請來函討論. 不然, 我可能會錯失你再補充的疑點.

2007-01-17 03:09:51 · answer #4 · answered by JJ 7 · 0 0

fedest.com, questions and answers