1

我正在尝试模拟一个准备好显示 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
-------------


4

0 回答 0