你用GetPrivateProfileString以前,用了WritePrivateProfileString写相应的destination buffer了吗?

解决方案 »

  1.   

    这段代码是这样的    char CurrentPath[_MAX_PATH];
        char szdir[_MAX_DIR];
        char szdrive[_MAX_DRIVE];
        GetModuleFileName(NULL,LPTSTR(CurrentPath),_MAX_PATH);
        _splitpath(CurrentPath,szdrive,szdir,NULL,NULL);
        char *temp="record.ini";
        char *temp1;
        char *Mydir;
        temp1=strcat(szdrive,szdir);
        Mydir=strcat(temp1,temp);
        cout<<"\t\t\t请输入你的学号:";
        char Number[10];
        ZeroMemory(Number,10);
        cin>>Number;
        char Ecount[10];
        cout<<"\n\n请输入一个数字:"<<endl;
        int ierror;
        cin>>ierror;
        ZeroMemory(Ecount,10);
        _itoa(ierror,Ecount,10);
        WritePrivateProfileString("Record",Number,Ecount,Mydir);    system("cls");
        cout<<"\n\n\n\t\t\t 成 绩 查 询\n\n"<<endl;
        cout<<"请输入你要查询的学号:";
        char QNumber[10];
        ZeroMemory(QNumber,10);
        cin>>QNumber;
        char temp[125];
        ZeroMemory(temp,125);
        char *CurrentPath=GetPath();
        GetPrivateProfileString("Record",QNumber,NULL,temp,125,Mydir);
        cout<<"\n\n查询结果\n"<<endl;
        cout<<"学号:"<<QNumber<<"\n"<<endl;
        cout<<"成绩:"<<temp<<"\n"<<endl;
      

  2.   

    record.ini这个文件里的内容确实被正确的写入了。但是就是读不出来
    我真的没有办法
      

  3.   

    请检查CurrentPath的值,以下代码正常
    #include "stdafx.h"
    #include <windows.h>
    #include <assert.h>char fn[512];int main(int argc, char* argv[])
    {
        GetModuleFileName(NULL,fn,512);
        char *p = strrchr(fn,'.');
        assert(p);
        p++;
        strcpy(p,"ini");
        WritePrivateProfileString("record","numbers","12345",fn);
        //运行到这里.ini文件里有两行:[record]和numbers=12345
        char Buf[128];
        memset(Buf,0,128);
        cout<<"\n\n\n\t\t\t 成 绩 查 询\n\n"<<endl;
        cout<<"请输入你要查询的学号:";
        cin>>Buf;        //运行到这里时输入numbers再回车
        GetPrivateProfileString("record",Buf,NULL,Buf,128,fn);
        printf("Record in ini file is: %s\n",Buf);
        //运行到这里屏幕输出: Record in ini file is: 12345
        return 0;
    }
      

  4.   

    你怎么有两个同名的变量temp,
    char *temp="record.ini";
    char temp[125];
    编译时没出错吗?
    你试着将char temp[125]改个名字斯一下
    char chResult[125]或其他的,不要重名。
         
      

  5.   

    int main(int argc, char* argv[])
    {
    char *name="D:\\SanProj\\t\\record.ini";
    WritePrivateProfileString("record","path","D:\\SanProj\\t",name);
    char buf[MAX_PATH];
    GetPrivateProfileString("record","path","D:\\",buf,MAX_PATH,name);
    return 0;
    }
    这样可以写入读出。
      

  6.   

    to DoItFreely(Freely):你的程序是正确的,谢谢你,我先去仔细检查一下!不过如果是因为路径的问题的话,那么不可能写进去啊?WritePrivateProfileString这个函数执行是正确的,内容可以正确写入,WritePrivateProfileString和GetPrivateProfileString都是用的同一个函数来获取路径的。你能否告诉我信箱?我把整个程序给你发过来!麻烦你帮忙看看,OK?to tenderfoot(想知道):其实上面这代码是在一个类的不同成员函数里,所以有局部变量重名的问题
      

  7.   

    to DoItFreely(Freely):能否告诉我你的EMAIL?谢谢
      

  8.   

    DoItFreely(Freely):我已经把全部代码发送到了你的信箱里,请你帮忙给我看看为什么GetPrivateProfileString这个函数读不出来值,不胜感谢,
      

  9.   

    to mfs(魔法师):Win32 Console方式
      

  10.   

    我已经看过了,问题在char *CTest::GetPath()里,注意查收邮件!
      

  11.   

        char *temp="record.ini";
        char *temp1;
        char *Mydir;
        temp1=strcat(szdrive,szdir);  //
        Mydir=strcat(temp1,temp);     // 这两行有问题吧?内存空间在哪?
        
      

  12.   

    set breakpoint on this sentents:char *CurrentPath=GetPath();
    debug it!