gpt4 book ai didi

c - 指针指向的字符串在哪里/如何存储在文件中?

转载 作者:太空狗 更新时间:2023-10-29 16:04:01 24 4
gpt4 key购买 nike

以下代码示例将 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("\n\t cannot open file. . .");
return 1;
}
printf_s("%d records written successfully. . .",fwrite(&e1,sizeof(EMPLOYEE),1,fptr));
fseek(fptr,0,SEEK_SET);
fread(&e2,sizeof(EMPLOYEE),1,fptr);

printf_s("\nID = %d\nName = %s\nSalary = %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" 的地址。由于您在程序的同一执行 session 期间写入该数据并再次将其读回,因此该指针值仍然有效。 IE。当您从文件中读取它时,它仍然指向它最初指向的同一个静态字符串 "Ravi Shekhar"

如果将程序分成两个程序(一个进行写入,另一个进行读取),您会发现“读取器”程序无法再从文件中“读取”字符串,因为它实际上并不存在.您将简单地读取一个二进制指针值,它指向“阅读器”程序中的任何地方。

关于c - 指针指向的字符串在哪里/如何存储在文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6160577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com