I want to print column 6 from a text file "1PGB.pdb" into an output file "out". Following is my code:
#include <stdio.h>
#include <stdlib.h> /* For exit() function*/
#define ROW 500
#define COL 12
int main()
{
int n6, garbage;
FILE *fp;
FILE *op = fopen("out", "w");
int score[ROW][COL];
int row, col, item, i, j;
if ((fp=fopen("1PGB.pdb","r"))==NULL)
{
printf("Error! opening file");
exit(1); /* Program exits if file pointer returns NULL. */
}
for(row=0; row<ROW; row++)
{
col=5;
fscanf(fp, "%d", &score[row][col]);
fprintf(op, "%d", score[row][col]);
fclose(fp);
fclose(op);
}
return 0;
}
It gives the following error.
Error in `./Code1': double free or corruption (out): 0x0000000000cde250 *** Aborted (core dumped)
The first few lines of 1PGB.pdb file are:
ATOM 1 N MET A 1 12.969 18.506 30.954 1.00 15.93 N
ATOM 2 CA MET A 1 13.935 18.529 29.843 1.00 17.40 C
ATOM 3 C MET A 1 13.138 18.692 28.517 1.00 14.65 C
ATOM 4 O MET A 1 12.007 18.222 28.397 1.00 13.04 O
ATOM 5 CB MET A 1 14.733 17.216 29.882 1.00 20.72 C
ATOM 6 CG MET A 1 15.742 16.983 28.738 1.00 23.81 C
ATOM 7 SD MET A 1 17.378 17.025 29.359 1.00 28.11 S
ATOM 8 CE MET A 1 17.166 16.055 30.819 1.00 27.51 C
ATOM 9 N THR A 2 13.719 19.413 27.573 1.00 12.63 N
ATOM 10 CA THR A 2 13.088 19.661 26.283 1.00 12.68 C
ATOM 11 C THR A 2 13.561 18.631 25.300 1.00 12.02 C
ATOM 12 O THR A 2 14.763 18.432 25.121 1.00 13.07 O
ATOM 13 CB THR A 2 13.527 20.980 25.667 1.00 14.62 C
This seems like a good, simple approach: