#include<stdio.h>
#pragma warning(disable:4996)
#include<time.h>
int main() {
char samp[3] = { '■' ,'■', '■' };
int i = 0;
printf("■\n");
while (i < 3) {
printf("%c", samp[i]);
i++;
}
return 0;
}
改成字符串就可以了,供参考:
#include<stdio.h>
#pragma warning(disable:4996)
#include<time.h>
int main() {
char samp[3][3] = { "■" ,"■", "■"};
int i = 0;
printf("■\n");
while (i < 3) {
printf("%s", samp[i]);
i++;
}
return 0;
}
我很怀疑你的这个方框到底是不是ascii字符?
%c的格式化输出形式,代表输出单个字符。并且只有符合ascii码规范的值才能正常打印输出。否则就是乱码。
我觉得出现这个问题的本质在于:因为所有内容,在冯诺依曼体系的计算机内存里,都是以二进制数据存在。只不过看你怎么用了。到底是按多少字节读?还是,逐二进制为读?ascii码用1个字节标识,并且,最高位为0。在ascii码的有效取值内,以单字符输出,就能够正常打印,否则就会出问题。
我个人觉得是这个问题。有问题我们可以继续交流。谢谢~
测试了一下,你这个黑框字符的长度是2,说明它是由两个字节组成的,因此直接放字符串里显示没问题,但用%c显示是不行的。因为组成它的两个字节都是不可见字符,会显示成乱码
不属于ASSII码字符吧,要想使用的话应该要设置编码吧,理论上,我没有试过。。。