C语言 写了个简单的代码想验证结构体的输出和strcmp的使用,但是出现这样的问题

C语言 写了个简单的代码想验证结构体的输出和strcmp的使用,但是出现这样的问题

问题描述:


#include<stdio.h>
#include<string.h>
struct Menu
{
    char no[3];
    char name[30];
    int Price;
    int Ava;
    char des[100];
};


int main()
{
    char xxx[3]="1-1";
    struct Menu ki[2]={
        {"1-1","Chicken starter",150,5,"4 pcs boneless chicken"},
        {"1-2","Fish starter",120,6,"2 pcs fish"}
    };
    if(strcmp(ki[0].no,xxx)==0){
        printf("%s\t%s\t%d\t%d\t%s\n",ki[0].no,ki[0].name,ki[0].Price,ki[0].Ava,ki[0].des);
    }
    return 0;
}

img


结果就是不等于 但是我确实是等于的啊
如果我把strcmp的==0删去,就会输出,但是不仅格式不正确,而且结果是错的,多输出了一个元素

img

char xxx[4]="1-1";
char no[4];