加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 指针指向的字符串在何处/如何存储在文件中?

发布时间:2020-12-16 09:35:02 所属栏目:百科 来源:网络整理
导读:以下代码示例将EMPLOYEE类型的结构变量写入文件,然后使用fread将结构读回另一个变量中. int main(){ EMPLOYEE e1,e2; FILE *fptr; e1.emp_id=2240; e1.emp_name="Ravi Shekhar"; e1.emp_salary=10000; fptr=fopen("c:employee.emp","w+b"); if(fptr == NUL
以下代码示例将EMPLOYEE类型的结构变量写入文件,然后使用fread将结构读回另一个变量中.

int main()
{
    EMPLOYEE e1,e2;
    FILE *fptr;

    e1.emp_id=2240;
    e1.emp_name="Ravi Shekhar";
    e1.emp_salary=10000;

    fptr=fopen("c:employee.emp","w+b");
    if(fptr == NULL)
    {
        printf_s("nt cannot open file. . .");
        return 1;
    }
    printf_s("%d records written successfully. . .",fwrite(&e1,sizeof(EMPLOYEE),1,fptr));
    fseek(fptr,SEEK_SET);
    fread(&e2,fptr);

    printf_s("nID = %dnName = %snSalary = %10.2lf",e2.emp_id,e2.emp_name,e2.emp_salary);


    fclose(fptr);


    _getch();
    return 0;
}

我的问题是e1.emp_name(一个char *类型)指向的名称字符串在何处以及如何存储在二进制文件中.

谢谢.

解决方法

它根本没有存储.

存储的是char * emp_name指针的二进制内容 – 静态字符串“Ravi Shekhar”的地址.由于您在程序的同一执行会话期间写入该数据并再次读取它,因此该指针值仍然有效.即当你从文件中读取它时,它仍然指向它最初指向的相同静态字符串“Ravi Shekhar”.

如果将程序拆分为两个程序(一个执行写入而另一个执行读取),您将发现“reader”程序无法再从文件中“读取”字符串,因为它实际上并不存在.您只需读取二进制指针值,它在“阅读器”程序中无处可寻.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读