这个问题不知道是不是vc2010的一个bug

ShamsangPo 2012-02-10 02:45:57
在做项目的过程中无意中发现的一个问题:很简单的一个小程序,只是为了测试c语言的文件输出功能而已,在VC2010下调试通过,但输出的文本文件为乱码,奇怪的是只要将"%10u"中的数字10改为11、12或任何其它数字,则能正常输出。百思不得其解,望高人解答之。程序如下所示:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
unsigned int p[10]={999999999, 999999999, 999999999, 999999999, 999999999, 999999999, 999999999, 999999999, 999999999, 999999999};
FILE *fp;
if ((fp=fopen(".\\output.txt", "w"))==NULL)
exit(-1);
for (i=0; i<10; ++i)
fprintf(fp, "%10u", p[i]);
fclose(fp);
return 0;
}
...全文
183 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShamsangPo 2012-02-13
  • 打赏
  • 举报
回复
感谢各位的解答,经过各位的解疑,现在这个问题已经非常清楚了,就是记事本的问题,与VC没有关系。知道是什么原因,也就很容易进行相关处理了。
结帖。
ShamsangPo 2012-02-10
  • 打赏
  • 举报
回复
楼上说的有道理,但这只是解释了记事本乱码的问题,可vc为什么会生成这样的文本呢?
因为如果把正常打开的写字板里面的内容拷贝到一个新的文本文件中,再次用记事本打开是不会乱码的。
logiciel 2012-02-10
  • 打赏
  • 举报
回复
记事本把用"%10u"格式生成的文件按Unicode打开,所以显示乱码。此时打开时选“编码”为ANSI可正常显示。
记事本把用"%11u"格式生成的文件按ANSI打开,所以显示正常。

word、写字板或UE能智能判断文件编码格式,所以没有问题。
ShamsangPo 2012-02-10
  • 打赏
  • 举报
回复
确实,用记事本打开乱码,用word或写字板打开是正常的。谁知道是什么原因么?
warren258 2012-02-10
  • 打赏
  • 举报
回复
code::blocks无压力
Defonds 2012-02-10
  • 打赏
  • 举报
回复
藏得很深
AnYidan 2012-02-10
  • 打赏
  • 举报
回复
vs2010 用 notepad 打开乱码, 用 word 打开 正常
康斯坦汀 2012-02-10
  • 打赏
  • 举报
回复
window 2003 server下,编译程序,输出正常,无乱码。
程序员小迷 2012-02-10
  • 打赏
  • 举报
回复
代码应该没问题,gcc4.2下可行,正常
viktor 2012-02-10
  • 打赏
  • 举报
回复
联通

这个跟当年的联通bug是一样的。
就是在记事本里面打“联通”两个字 Ansi保存。然后再打开就乱码。

编码问题。
ForestDB 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 logiciel 的回复:]

记事本把用"%10u"格式生成的文件按Unicode打开,所以显示乱码。此时打开时选“编码”为ANSI可正常显示。
记事本把用"%11u"格式生成的文件按ANSI打开,所以显示正常。

word、写字板或UE能智能判断文件编码格式,所以没有问题。
[/Quote]
的确是记事本的问题,应该说记事本的判断有问题,然后这种被误判成Unicode的了。

[Quote=引用 8 楼 shamsangpo 的回复:]

楼上说的有道理,但这只是解释了记事本乱码的问题,可vc为什么会生成这样的文本呢?
因为如果把正常打开的写字板里面的内容拷贝到一个新的文本文件中,再次用记事本打开是不会乱码的。
[/Quote]
我做了个实验,手动输入' 999999999'重复10次到记事本,以ansi保存,打开的时候还是乱码。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧