我正在尝试模拟一个准备好显示 4 行的菜单。菜单项是动态填充的,我尝试了这个:
#include <stdio.h>
#include <string.h>
#define MAX_STRING_LENGTH 20
char OPTIONS[12][20] = {
"MenuItem1",
"MenuItem2",
"MenuItem3",
"MenuItem4",
"MenuItem5",
"MenuItem6",
"MenuItem7",
"MenuItem8",
"MenuItem9",
"MenuItem10",
"MenuItem11",
"MenuItem12"
};
int OPTIONS_LENGTH = 12;
int PAGE_SIZE = 4;
int PAGE_NUMBER = 1;
void ShowSelected(int _index){
if(_index > (PAGE_SIZE * PAGE_NUMBER)){
PAGE_NUMBER++;
}else if(_index < (PAGE_SIZE * PAGE_NUMBER) && PAGE_NUMBER > 1){ // here seems to be an issue when the page number should be decreased
PAGE_NUMBER--;
}
for (int i = 0; i < PAGE_SIZE; i++) {
char finalString[MAX_STRING_LENGTH];
strcpy(finalString, _index == i ? ">" : " ");
strcat(finalString, OPTIONS[i]);
printf("\n %s", finalString);
}
printf("\n-------------");
printf("\nselected_item: %d | page_number: %d", _index + 1, PAGE_NUMBER);
printf("\n-------------");
}
int main()
{
for (int i = 0; i < 12; i++) {
ShowSelected(i);
}
for (int i = 12; i > 0; i--) {
ShowSelected(i);
}
return 0;
}
我的预期输出是根据 PAGE_NUMBER 从选项数组中显示 4 个元素的范围(其中一个标记为已选择(根据选定的索引))
预期的输出应该是:
>MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 1 | page_number: 1
-------------
MenuItem1
>MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 2 | page_number: 1
-------------
MenuItem1
MenuItem2
>MenuItem3
MenuItem4
-------------
selected_item: 3 | page_number: 1
-------------
MenuItem1
MenuItem2
MenuItem3
>MenuItem4
-------------
selected_item: 4 | page_number: 1
-------------
>MenuItem5
MenuItem6
MenuItem7
MenuItem8
-------------
selected_item: 5 | page_number: 2
-------------
MenuItem5
>MenuItem6
MenuItem7
MenuItem8
-------------
selected_item: 6 | page_number: 2
-------------
MenuItem5
MenuItem6
>MenuItem7
MenuItem8
-------------
selected_item: 7 | page_number: 2
-------------
MenuItem5
MenuItem6
MenuItem7
>MenuItem8
-------------
selected_item: 8 | page_number: 2
.
.
.
有没有人可以帮助我解决这个问题,或者如果有人有更好的主意?
编辑 当前输出:
>MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 1 | page_number: 1
-------------
MenuItem1
>MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 2 | page_number: 1
-------------
MenuItem1
MenuItem2
>MenuItem3
MenuItem4
-------------
selected_item: 3 | page_number: 1
-------------
MenuItem1
MenuItem2
MenuItem3
>MenuItem4
-------------
selected_item: 4 | page_number: 1
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 5 | page_number: 1
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 6 | page_number: 2
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 7 | page_number: 1
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 8 | page_number: 2
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 9 | page_number: 2
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 10 | page_number: 3
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 11 | page_number: 2
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 12 | page_number: 3
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 13 | page_number: 3
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 12 | page_number: 2
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 11 | page_number: 3
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 10 | page_number: 2
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 9 | page_number: 2
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 8 | page_number: 1
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 7 | page_number: 2
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 6 | page_number: 1
-------------
MenuItem1
MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 5 | page_number: 1
-------------
MenuItem1
MenuItem2
MenuItem3
>MenuItem4
-------------
selected_item: 4 | page_number: 1
-------------
MenuItem1
MenuItem2
>MenuItem3
MenuItem4
-------------
selected_item: 3 | page_number: 1
-------------
MenuItem1
>MenuItem2
MenuItem3
MenuItem4
-------------
selected_item: 2 | page_number: 1
-------------