0
即時通訊編程的新手,我需要在第一階段在我的程序中顯示一個二進制文件。分段錯誤 - 打開二進制文件
我的老師的幫助下,我能做到這一點,但是當我在代碼工作到很晚我改變出頭,我不能回去,現在:(
這是代碼:
#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;
}
我認爲,這是因爲該文件打開,但即時通訊在循環試圖把這個重新走到一起,需要幫助
我會簡單地認爲這就是你想要訪問'與比數組較大的指數matriz' 。在每次訪問之前,請檢查'a','b'和'c'來查看它們是否具有很好的價值。 – Steve
另外,學習並開始使用版本控制系統(如Git)。如果你經常檢查你的代碼,那麼做一個改變,打破你的程序,你可以回到一個工作版本,甚至執行工作版本和當前損壞的版本之間的區別,看*完全*有什麼不同。 – Steve
此外,雖然(!feof())總是錯誤的,請參閱http://stackoverflow.com/questions/5431941/while-feof-file-is-always-wrong – SirDarius