c++人工洗牌发牌中的错误,求原因和解决方法

初学者,真的不懂怎么改,是要运算符重载吗?但是我没设置类啊_(:з」∠)_

img

img

img

错误的就是这个
m={"梅花",a[n]};
连续错了四个(后面一样的错误)
不知道为什么,希望哪位大佬解答一下,告诉一下原因和改正方法,感谢。
最后的bug了,让我编译成功就行,网上也没搜到类似的,是我犯了太蠢的错误了吗,我深刻记住这次错误。


(错误1)结构体不能这么赋值 ,
m={"梅花",a[n]};应该写成下面2句:

strcpy(m.huase,"梅花");//字符串用strcpy拷贝
m.num = a[n];
(错误2struct card
{
    char huase[5]; //这里改成5,一个汉字占2个字节,2个汉字就是4个字节,还需要给\0留一个位置,否则显示的时候会出错
    int num;
};

(错误3)在paimon函数中,数组a没有初始化就使用了,a中的数都是随机数。

img

  1. 拼写错误:huase改为house
  2. 字符数组大小设置大些,比如char house[10],因为你存储的是中文,一个中文字符UTF-8编码至少占两个字符
  3. m = { ... },改为m = card{ ... }
  4. pairmon()函数中数组a没有初始化
  5. pairmon()函数参数m是传值的?你是不是应该传引用?否则对m修改,只是对局部变量修改