我有一个结构体想把它写到文件中去,有不有办法直接把这个结构体转换成字符串(我想只有字符串类型才能写到文件吧),谢谢.

解决方案 »

  1.   

    可以用char *强制类型转换。
    比如
    struct Node{
    int nCout;
    char szStr[16]
    };Node node;
    memset(&node, 0, sizeof(Node));
    node.nCount = 1;
    strcpy(node.szStr, "str");char *pszStr = (char *) &node;
    // 如果想再转换过来......
    Node *node1 = (Node *)pszStr;
    TRACE("%d; %s;\n", node1->nCount, node1->szStr);
      

  2.   

    不要这样保存文件!最好每个结构写个函数!如下:struct Node{
    int nCout;
    char szStr[16];
    void Write2File(FILE * fp)
    {
      fprintf( stream, "%d %s", nCout, szStr );  
    }
    };
      

  3.   

    读写的时候,会自动移动文件指针位置的。
    不过要注意格式,不能乱了,也就是最基本的printf和scanf格式!
      

  4.   

    to fisker0303(Thinking In Love)
    我用的正好就是1字节对齐,正是太好了.struct MyStruct
    {
       long ID;
       TCHAR szName[20];
    };
    我还想问一下,我存在文件中的是结构数组,比如说数组大小为100个
    我修改或读取第30个的szName,
    移动指针的方法是不是先移到第30个,cfile.Seek(sizeof(struct MyStruct)*30, CFile::begin );
    然后再移到szName,cfile.Seek(sizeof(long), CFile::current);
    然后就是修改了,该怎么修改呢,CFile好像没有这样的方法(不是先删除再增加吧)谢谢