有人可以发现我的代码中的错误吗?我不知道我错过了什么,我搞砸了什么

Can someone spot the errors in my code? I don't know what part am I missing and what I messed up

我想要的示例输出:

chocolate bar   .00
skittles        .20
marshmellows    .00
candy-cane      [=10=].90

我得到的输出:

░"@  .00
░"@  .20
░"@  .00
░"@  [=11=].90

我做的代码:

#include <stdio.h>
void ShowMenu();
int main()
{
    int i, j;
    float price[4][1]= {1,1.2,5,0.9};
    char snack[4][20];
    
    ShowMenu(price, i, j, snack);
    
    return 0;
}

void ShowMenu(float price[4][1], int i, int j, char snack[4][20])
{
    for (i=0;i<4;i++)
        for (j=0;j<1;j++)
            {
            if(i==0)
            snack[0][20]=="chocolate bar" ;
            else if(i==1)
            snack[1][20]=="skittles"  ;
            else if(i==2)
            snack[2][20]=="marshmellows"  ;
            else if(i==3)
            snack[3][20]=="candy-cane"  ;
            printf("%s  RM%.2f\n", snack, price[i][j]);
            }
}
  1. 您的函数原型必须与您的定义*完全相同!!!
  2. 很多变量和参数的用途很难理解。我已经删除了所有不需要的东西
void ShowMenu(float price[], char *snack[], int nitems);
int main(void)
{
    float price[4] = {1,1.2,5,0.9};
    char *snack[20] = {"chocolate bar", "skittles", "marshmellows", "candy-cane"};
    
    ShowMenu(price, snack, 4);
    
    return 0;
}

void ShowMenu(float price[], char *snack[], int nitems)
{
    for (int i = 0; i < nitems; i++)
    {
        printf("%s\tRM%.2f\n", snack[i], price[i]);
    }
}