如何使用c将结构中的数据放入文本文件?

How to put data in structure into text file using 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 还很陌生,所以如果有人能向我解释这是否可行以及如何实现,我将不胜感激。

将字符串打印到文件时,请务必记住字符串终止符 '[=13=]' 会导致某些内容无法显示。所以你应该避免一个一个地写字符串。

另一个可能的问题是,使用 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 以防万一你不需要它)。