fwrite有bug,但我不知道怎么办?

时间:2013-12-12 15:04:28

标签: c

帮我解决这个问题...它一直说出错: -

它说fwrite有问题..

// #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

    struct prod
    {
        char ProductCode [5];
        int Expired_year;
        char Product_country [25];
    }product;
    struct prod product;

void main()
{

    char x ;
    FILE* data;
    data = fopen("product.dat","wb");

    while(x != 'N')
    {
        printf("Enter product code :");
        scanf("%s", product.ProductCode);
        printf("Enter expired year of the product :");
        scanf("%d", &product.Expired_year);
        fflush(stdin);
        printf("Enter product country :");
        scanf("%[^\n]", product.Product_country);
        fflush(stdin);

        fwrite(&prod, sizeof(product), 1, data);

        printf("\nPlease enter anykey to continue or 'N' to stop: ");
        scanf("%c", &x);
        fflush(stdin);
        printf("\n");
    }
    fclose(data);

}

4 个答案:

答案 0 :(得分:3)

fwrite(&prod, sizeof(product), 1, data);

prod不是指struct个实例,而是指结构的名称,它应该是

fwrite(&product, sizeof(product), 1, data);

答案 1 :(得分:1)

fwrite()的语法错误。 它应该是,

fwrite(&product, 1, sizeof(product), data);

答案 2 :(得分:0)

第一个参数需要一个指向某些数据的指针,但&amp; prod无效。 prod是一个类型,而不是实例变量。您可能希望将其更改为fwrite (&product, ...)

答案 3 :(得分:0)

首先,您要宣布struct prod product两次。 其次,fwrite()的正确语法是fwrite(&product,sizeof(struct prod),1,data);