linux 下运行C的程序,终端运行出现乱码,该怎么解决?!!
在linux下,其实不用选择gb2312,我都用的是utf8,当然也需要按照以上步骤进行设置,肯定不会出现乱码!个人喜好,大家随意!
之前我试了很多方法,比如在/etc/sysconfig/i18n文件中改系统字体,在/etc/mycnf中[mysqld]字段后加入如下语句default-character-set=gb2312等等,我觉得没有必要。
以上步骤看似很简单,但是我的失败教训,也是我的成功心得。现在与大家分享,看后有收获的,不顶一下就是你的不厚道了!
a,b是两个字符型变量,所以这里的176、219就不再是整数了,而是ascii码,ascii码里176对应的字符是“°”,219对应的字符是“Û”,所以输出为:
Û°°°Û
°Û°Û°
°°Û°°
°Û°Û°
Û°°°Û
这个算是个字符画“X”,并非程序出错产生乱码
这个例子的目的应该是让你了解ascii码并熟悉printf的用法
输入的字符串长度是多少呢?scanf这个函数在连续输入不同类型的时候注意了,一不小心就出问题。因为%s! %s 很有可能把后面的元素也包含进去了,这样,你其实只有
p1->name
或者
p1->type
初始化了,后面的变量全部没有初始化,建议调试一下,看看这些结构体成员都是什么值。我想很可能其中一个字符串类似:
"棉袜大号,122983"
之类的,也就是把本来给 double 的也输入进来。如果字符串有空格,就会被拆成两个了。因此,我的做法是:
全部调用 gets 函数,一次回车输入一行,而不是全部用 scanf来做。至于乱码,是因为最后一个字符串变量没有初始化,于是后面没有\0,程序把内存中的乱码写进文件,直到偶然遇到\0为之。这样的程序是不稳定的。
0条评论