C char数组到二进制文件

时间:2014-03-24 21:07:42

标签: c segmentation-fault binaryfiles

    int felvetel()
{
    FILE *ptr_myfile;
    struct stadion* my_record;

    my_record = malloc(sizeof(struct stadion) * 1);
    ptr_myfile=fopen("test.bin","wb");
    if (!ptr_myfile)
    {
        printf("Nem lehet megnyitni a fajlt!");
        return 1;
    }
    printf("Varos: ");
    scanf("%s", my_record[0].varos);
    printf("Csapat: ");
    scanf("%s", my_record[0].csapat);
    printf("Nezoszam: ");
    scanf("%i", my_record[0].nezoszam);
    printf("Koltseg: ");
    scanf("%i", my_record[0].koltseg);
    printf("Atadas eve: ");
    scanf("%i", my_record[0].ev);
    printf("Atadas honapa: ");
    scanf("%i", my_record[0].honap);
    printf("Atadas napja: ");
    scanf("%i", my_record[0].nap);
    fwrite(my_record, sizeof(struct stadion), 1, ptr_myfile);
    fclose(ptr_myfile);
    return 0;
}

它不起作用。当我想在3.行中添加一个int时,我得到了“Segmentation fault”,但我不知道为什么。

请检查,它好吗?

    int listazas()
{
    FILE *ptr_myfile;
    struct stadion my_record;

    ptr_myfile=fopen("test.bin","rb");
    if (!ptr_myfile)
    {
        printf("Nem lehet megnyitni a fajlt!");
        return 1;
    }
    while (!(feof(ptr_myfile)))
    {
        fread(&my_record,sizeof(struct stadion),1,ptr_myfile);
        printf("%s\t",my_record.varos);
        printf("%s\t",my_record.csapat);
        printf("%i\t",my_record.nezoszam);
        printf("%i\t",my_record.koltseg);
        printf("%i\t",my_record.ev);
        printf("%i\t",my_record.honap);
        printf("%i\t",my_record.nap);
    }
    fclose(ptr_myfile);
    return 0;
}

我希望它运行良好,但我无法尝试,因为我的二进制文件中没有任何内容。

为什么要将结构添加到二进制文件两次?

0 个答案:

没有答案