gpt4 book ai didi

c - 如何使用 fwrite 将结构体的字符串成员写入文件?

转载 作者:行者123 更新时间:2023-11-30 15:10:23 24 4
gpt4 key购买 nike

我有一个 c 代码,我正在使用包含 name 的结构来使用 scanf() 函数获取用户输入。每当我尝试使用 fwrite() 在文件中写入名称时,它不会写入我输入的所有字符,而只会写入很少的字符(只有四个字符)。我知道问题出在 fwrite() 函数的 sizeof() 上,但我无法弄清楚应该在 sizeof() 中写入什么内容,这样我就可以存储从用户那里获得的字符串。我知道如果使用char name[20]而不是char *name,它就会起作用。

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

struct Emp
{
char *name;
char *addr;
}*e;

int main()
{
FILE *fp;

e=(struct Emp *)malloc(sizeof(struct Emp));
e->name=(char *)malloc(sizeof(char )*20);

fp=fopen("Employee.txt","r+");
if(fp==NULL)
{
fp=fopen("Employee.txt","w+");
if(fp==NULL)
{
printf("cannot open the file");
exit(1);
}
}

printf("Name of Employee: ");
scanf("%s",e->name);
fwrite(e->name,sizeof(e->name),1,fp);


return 0;
}

如果我输入员工姓名:chiranjibi,fwrite()函数只会在文件中写入chir。有什么方法可以让此代码正常工作,以便我可以输入用户的任意数量的字符?

最佳答案

sizeof(e->name) 返回指针的大小(通常为 4 或 8)

使用strlen(e->name)获取字符串的长度。假设字符串以 null 结尾。

关于c - 如何使用 fwrite 将结构体的字符串成员写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36214693/

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