后面是乱码,你没有初始化字符数组char a[5] = {};scanf遇到空格回车都会停止操作,所以当你输入q空格时就只输进了q,空格后面的数据暂时还在输入缓冲区里等待读入所以只有a[0]是正确的数据,后面因为没有初始化,是分配时储存在里面的旧数据,也就是乱码