如何解决如何使用c将结构数据放入文本文件?
假设我有一个结构,看起来像这样:
struct profile {
char firstName[15],lastName[15];
int age,phoneNo;
};
我有这样的代码
int main()
{
FILE *fPtr;
fPtr=fopen("profile.txt","w");
printf("\n\nPlease enter your details:");
struct profile c;
printf("\n\nEnter your first name: ");
gets(c.firstName);
printf("\nEnter your last name: ");
gets(c.lastName);
printf("\nEnter your age: ");
scanf("%d",&c.age);
printf("Enter your phone number: ");
scanf("%d",&c.phoneNo);
fclose(fPtr);
return 0;
}
如何将这种结构中的数据放入文本文件中,以便将来可以搜索特定的配置文件?另外,我对C还是很陌生,所以如果有人可以向我解释这是否可行以及如何实现,我将非常感激。
解决方法
在将字符串打印到文件时,请记住字符串终止符'\0'
会导致某些内容无法显示,这一点很重要。因此,您应该避免一一写入字符串。
当使用fwrite
将一个整数写入...作为整数时,这意味着使用包含实际值的4个字节存储该整数,则会发生另一个可能的问题。例如,值72将存储为
0x48 0x00 0x00 0x00
,将显示字母H
,后跟三个空字符。因此,您还必须将数字显示为字符串。
我建议使用fprintf
进行操作。它的工作方式类似于printf
,但是它写入文件而不是stdout
。在下面的示例中,每个字段写在不同的行中,并且双换行符结束当前记录:
fprintf (fPtr,"%s\n%s\n%s\n%s\n%d\n%d\n\n",firstName,lastName,custID,healthHistory,age,phoneNo);
注意:gets
已被弃用,因为它不执行任何字符串长度检查。因此,例如,如果您提供的firstName
长度为20个字符,则超出的字符将超出该字段的大小,从而覆盖下一个字符。请记住,大小为N的char数组最多包含一个字符串N-1
个字符长(字符串终止符需要一个)。
我建议改用fgets
:
fgets (c.firstName,15,stdin);
将最多读取个15个字符,包括(包括)个字符串终止符(包括从命令行发送的结尾换行符以终止输入。如果您不输入,则将有to remove it不需要)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。