分段错误 - 打开二进制文件

时间:2013-11-04 15:31:15

标签: c file segmentation-fault

我是编程的新手,我需要在第一阶段在我的程序中显示一个二进制文件。

在我的老师的帮助下,我能够做到这一点,但是当我在代码中工作到很晚时,我改变了一些我现在无法回复的东西:(

这是代码:

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

int main()
{
    FILE *f;
    int a = 0, b = 0, c = 0, d = 0;
    float cinzentos = 0, mlinha = 0, ppixeis = 0;
    unsigned char matriz[28][28][500];

    f = fopen("dados1.bin", "rb");

    if (f != NULL) {
        while (!feof(f)) {
            b++;

            if (b == 28) {
                printf(" soma: %f ", mlinha);
                printf(" cizentos: %f ", mlinha / 28);
                printf("\n");
                b = 0;
                a++;
                mlinha = 0;
                printf("%d %d %d", a, b, c);
            }

            if (a == 28) {
                a = 0;
                c++;
                ppixeis = (ppixeis / 28 * 28) * 0.1;
                printf("media de pixeis: %f\n", ppixeis);
                printf("\n---------------\n");
            }

            matriz[a][b][c] = fgetc(f);

            if (matriz[a][b][c] != 0) {
                printf("1");
                mlinha = mlinha + matriz[a][b][c];
                ppixeis++;
                fputc(matriz[a][b][c], p);
            } else {
                printf("0");
            }
        }
    }

    fclose(f);

    return 0;
}

我认为,那是因为文件打开了,但我正在尝试将它重新组合在一起,需要帮助

1 个答案:

答案 0 :(得分:0)

看起来您的代码已经关闭

while (!feof(f)) {
            b++;

确保b在第一个读取字符

时不会从0开始