在C語言中,可以使用控制臺的光標位置和控制臺大小來實現(xiàn)翻頁效果。具體步驟如下:
GetConsoleScreenBufferInfo
函數(shù)。以下是一個簡單的示例代碼:
#include <stdio.h>
#include <windows.h>
void gotoxy(int x, int y) {
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void clearScreen() {
system("cls");
}
void printPage(const char** content, int startLine, int endLine) {
for (int i = startLine; i <= endLine; ++i) {
printf("%s\n", content[i]);
}
}
int main() {
int pageSize = 10; // 每頁顯示的行數(shù)
int currentPage = 1; // 當前頁數(shù)
int totalLines = 100; // 總行數(shù),假設(shè)有100行數(shù)據(jù)
int totalPages = (totalLines + pageSize - 1) / pageSize; // 總頁數(shù)
int startLine, endLine; // 需要顯示的起始行和結(jié)束行
const char* content[100] = {
// 假設(shè)有100行內(nèi)容
"line 1",
"line 2",
// ...
"line 100"
};
while (1) {
clearScreen();
startLine = (currentPage - 1) * pageSize;
endLine = currentPage * pageSize - 1;
if (endLine >= totalLines) {
endLine = totalLines - 1;
}
printPage(content, startLine, endLine);
printf("Page %d / %d\n", currentPage, totalPages);
printf("Press 'U' to page up, 'D' to page down, 'Q' to quit: ");
char input = getch();
if (input == 'U' || input == 'u') {
currentPage--;
if (currentPage < 1) {
currentPage = 1;
}
} else if (input == 'D' || input == 'd') {
currentPage++;
if (currentPage > totalPages) {
currentPage = totalPages;
}
} else if (input == 'Q' || input == 'q') {
break;
}
}
return 0;
}
這段代碼使用了Windows API函數(shù)SetConsoleCursorPosition
來設(shè)置控制臺光標位置,GetConsoleScreenBufferInfo
來獲取控制臺大小,并且使用了getch
函數(shù)來獲取用戶輸入。請根據(jù)自己的需求進行適當修改。