源文件:#include "stdafx.h"
#include <windows.h>
#include <winnt.h>
#include <stdio.h>
#include <shlwapi.h>
#pragma comment(lib,"shlwapi")
TCHAR a[]=TEXT("d:\\我的.txt");
int main() {
printf("%s,%d,%d\n",a,PathFileExists(a),TRUE);
    FILE* pf=fopen(a,"r");
if(NULL==pf){
printf("cannot open\n");
exit(1);
}
char buf[200];
int ret=sizeof(buf);
while(ret==sizeof(buf)){
ret=fread(buf,sizeof(buf),1,pf);
printf("%s",buf);
}
    return 0;
}
输出是:
d:\??.txt,0,1
cannot open
Press any key to continue . . .一个可能的原因: 我的操作系统装的英文版XP+英文版VC2005,默认语言是English。但是中文包都全啊,上csdn也没有问题。
为什么控制台程序显示不出中文? 我尝试了进dos,发现dos状态下不能输入中文。这个到底是什么原因造成的,我的程序需要什么修改么?
谢谢!

解决方案 »

  1.   

    printf的问题 unicode下最好用wprintf
      

  2.   


    我把工程设置成支持unicode或者MBCS,调用wprintf结果都是编译不过去啊:#include "stdafx.h"
    #include <windows.h>
    #include <winnt.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <shlwapi.h>
    #pragma comment(lib,"shlwapi")
    TCHAR a[]=TEXT("d:\\我的.txt");
    int main() {
    wprintf("%s,%d,%d\n",a,PathFileExists(a),TRUE);
        FILE* pf=fopen(a,"r");
    if(NULL==pf){
    printf("cannot open\n");
    exit(1);
    }
    char buf[200];
    int ret=sizeof(buf);
    while(ret==sizeof(buf)){
    ret=fread(buf,sizeof(buf),1,pf);
    printf("%s",buf);
    }
        return 0;
    }
      

  3.   

    加_T()宏
    wprintf(_T("%s,%d,%d\n"),a,PathFileExists(a),TRUE);
      

  4.   

    VS2008下 Character set选择Use Multi-Byte Character Set没有问题,可以输出中文