c语言写一个简单的点餐系统,for循环里的break无效

c语言写一个简单的点餐系统,为什么我写出来的代码第一个for循环里的break不起作用啊,然后输出的fee也没反应,在循环里又可以输出,出了for循环就输出不了了
1

#include

#define max 30     //最多点30个菜 

struct price
{
    int price[8];     //定义一个数组结构体存放价格 
};

int main()
{
    struct price p1={40,65,45,72,42,10,15,15};     //存放每个菜的价格 
    int i,j,a[30];
    int fee=0;
    char b[8][1000]={"1    Curry beef with rice(咖喱牛肉饭)    ¥40.00\n",
    "2    Sushi set meal(寿司套餐)            ¥65.00\n",
    "3    YangZhou fired rice(扬州炒饭)            ¥45.00\n",
    "4    Sirloin Steak(西冷牛排)                    ¥72.00\n",
    "5    Chicken vegetable roll(鸡肉蔬菜卷)    ¥42.00\n",
    "6    Soft drink(软饮料)                    ¥10.00\n",
    "7    Red wine(红葡萄酒)                    ¥15.00\n",
    "8    Beer(啤酒)                            ¥15.00\n"};
    struct price *p;     //引入结构体指针 
    p=&p1;     //初始化 
    printf("欢迎来到本店,本店菜单如下:\n\n"
    "                        Menu\n"
    "                        Food:\n"
    "ID    Name                                      Cost\n"
    "1    Curry beef with rice(咖喱牛肉饭)    ¥40.00\n"
    "2    Sushi set meal(寿司套餐)            ¥65.00\n"
    "3    YangZhou fired rice(扬州炒饭)            ¥45.00\n"
    "4    Sirloin Steak(西冷牛排)                    ¥72.00\n"
    "5    Chicken vegetable roll(鸡肉蔬菜卷)    ¥42.00\n"
    "Drink:\n"
    "21    Soft drink(软饮料)                    ¥10.00\n"
    "22    Red wine(红葡萄酒)                    ¥15.00\n"
    "23    Beer(啤酒)                            ¥15.00\n"
    "More food/drink items are added to it.\n");
    printf("请输入您要点的菜的序号(用空格键间隔开):");
    for(i=0;i<max;i++)          
    {
        scanf("%d",&a[i]);     //存放客人点菜的数据 
        if(a[i]=='\n')    
            break;                      (就是这句无效)
    }
    printf("您的账单如下:\n");
    int len=sizeof(a)/sizeof(a[0]);
    for(i=0;i<len;i++)
    {
        fee+=*(p1.price+(a[i]-1));     //账单的总价格 
        printf("%s",b[a[i]-1]);     //账单里的菜名
    }    
    printf("总价格为:%d",fee);     //输出总价格         (打印不出来)
    return 0;
}

%d输入,不可能接收换行符的,所以根本不会成立的。