用一个函数返回值与一个字符串相加,为什么每次重新输入后,字符串总是恢复原来的值

问题遇到的现象和发生背景

用一个函数返回值与一个字符串相加,为什么每次重新输入后,字符串总是恢复原来的值,不能叠加在一起,请问各位师傅该怎么办?

用代码块功能插入代码,请勿粘贴截图

#include <stdio.h>
#include <string.h>
char* order_breakfast(char *a)
{
char *A1 ={"A1 HAM AND EGG 20\n"};
char *A2 ={"A2 BACON AND CHEESE 10\n"};
char *A3 ={"A3 TUMA SALAD 5\n"};
char *A4 ={"A4 BEEF SOUP 25\n"};

if (strcmp(a, "A1") == 0)
{
    return A1;
}
else if (strcmp(a, "A2") == 0)
{
    return A2;
}
else if (strcmp(a, "A3") == 0)
{
    return A3;
}
else if (strcmp(a, "A4") == 0)
{
    return A4;
}
else if (strcmp(a, "F") == 0 || strcmp(a, "C3") == 0 || strcmp(a, "C2") == 0 || strcmp(a, "C1") == 0 || strcmp(a, "B4") == 0 ||strcmp(a, "B3") == 0 || strcmp(a, "B2") == 0 || strcmp(a, "B1") == 0)
{
    printf("This dish is not available\n");
}
else
{
    printf("This dish code does not exist! Try again!\n");
}

}

int main()
{
char* i[100];

char p[2];

int a =0;

while(1)
{
scanf("%s", p);

  if (strcmp(p, "F") == 0)
  {
      break;
  }

  strcat(i, order_breakfast(p));

}
printf("%s", i);

}

运行结果及报错内容

A1
A2
F
A2 BACON AND CHEESE 10

我的解答思路和尝试过的方法

该试的拼接函数都试过了,感觉不行

我想要达到的结果

能否将字符串多次拼接并储存,以便后续打印。

你的字符串在函数里定义的,每次都重新初始化了呀
定义成全局变量,或者在main里定义

你这函数是不行的,A1等字符串只是函数内部局部变量,函数结束后,这些字符串空间就被系统回收了。所以到main函数时,这些字符串所占用内存已经不一定是什么内容了。将这四个字符串放到函数外面,变为全局变量。