本帖最后由 qq_heilongjiang 于 2013-01-16 16:57:56 编辑

解决方案 »

  1.   

    断点调试下看看,请参考《【调试技巧】图解如何在VC6,VS2008中设置程序条件断点》
    http://bbs.csdn.net/topics/390337515
      

  2.   

    如果不用fwprintf,改成fprintf(m_fpset,"%s\r\n",strPreset);的话,只能写进去一个字符
      

  3.   

    我的listbox里面的内容就一行一行的写入文件了,读出来的就是很多个空行。读出来的数据要赋值给char*类型的buff[22],调试的时候buff为空。但是,如果我自己直接编一个文本文件,和用程序写的看上去一模一样,就好使。
      

  4.   

    UTF-8和ANSI的问题。
    你手写的,应该是ANSI,而程序里是UTF-8。
      

  5.   

    写文件的这句fwprintf(m_fpset,L"%s\r\n",strPreset);
    是不是写的问题啊,导致字符集和读的时候不统一
      

  6.   


    void Write()
    {
    FILE* fp = NULL;
    fopen_s(&fp,"text.txt","w");
    if(fp == NULL)
    return;
    for(int k = 1; k <= 10; k++)
    fwprintf_s(fp,L"%d 中文 + English \n",k);
    fclose(fp);
    }void Read()
    {
    FILE* fp = NULL;
    fopen_s(&fp,"text.txt","r");
    if(fp == NULL)
    return;
    wchar_t buffer[256];
    while( ! feof(fp))
    {
    fgetws(buffer,sizeof(buffer),fp);
    wprintf_s(L"%s \n",buffer);
    }
    fclose(fp);
    }在使用之前先调用 _wsetlocale(LC_ALL,L"chs"); 设置语言。
    测试oK。(有个小问题,读取时最后一行看似读了2次,其实是因为在写的时候,都加了换行,所以最后一行其实是空的,但是buffer又没有清空,所以才会输出2次)
      

  7.   

    应该和我写入的这句有关系fwprintf(m_fpset,L"%s\r\n",strPreset);
    把读改成了fgetws((wchar_t *)buff, 22, m_fpset);怎么还是不好使呢
      

  8.   

    有w的是UNICODE的。
    比如strlen和wcslen。