#include #include int val; struct node{struct node *prev;int row;int col;int val;struct node *next;}; struct matrix{int rows;int cols;int points;struct node data[];};// mat; int readin(char filename[]) { FILE *f; char s[1048576]; f=fopen(filename,"r"); if (!f) return 1; while (fgets(s,1048576,f)!=NULL) { val++; } fclose(f); val--; struct node nodes[val]; struct matrix mat; mat.points=val; memcpy(mat.data,nodes,val); f=fopen(filename,"r"); if (!f) return 1; struct node start,finish; mat.data[0].prev=&start; mat.data[0].next=&finish; if ((fgets(s,1048576,f)!=NULL)) { mat.rows = atoi(strtok(s, " ")); mat.cols = atoi(strtok(NULL, " ")); } if ((fgets(s,1048576,f)!=NULL)) { char* savePtr; printf(s); //mat.data[0].row = atoi(strtok_r(s, " \t", &savePtr)); char *temp=strtok_r(s, " \t", &savePtr); printf(temp); printf("\n'%s'\n", savePtr); mat.data[0].col = atoi(strtok_r(NULL, " ", &savePtr)); printf("2\n"); printf("'%s'\n", savePtr); mat.data[0].val = atoi(strtok_r(NULL, " ", &savePtr)); printf("3\n"); printf("'%s'\n", savePtr); /*printf(s); mat.data[0].row = atoi(strtok(s, " ")); printf("1\n"); printf(strtok(NULL, " ")); printf("1b\n"); mat.data[0].col = atoi(strtok(NULL, " ")); printf("2\n"); mat.data[0].val = atoi(strtok(NULL, " ")); printf("3\n");*/ } int i,j,done; val=1; /* while (fgets(s,1048576,f)!=NULL) { done=0; mat.data[val].row = atoi(strtok(s, " ")); mat.data[val].col = atoi(strtok(NULL, " ")); mat.data[val].val = atoi(strtok(NULL, "")); for (i=0;i<=val;i++) { if (mat.data[val].row >= (*mat.data[i].next).row) { for (j=i;j<=val;j++) { if (mat.data[val].col >= (*mat.data[j].next).col) { mat.data[val].prev=&mat.data[j]; mat.data[val].next=mat.data[j].next; (*mat.data[j].next).prev=&mat.data[val]; mat.data[j].next=&mat.data[val]; if (done) { break; } } } } if (done) { break; } } val++; } */ fclose(f); return 0; }