All pastes #329268 Raw Edit

Untitled

public text v1 · immutable
#329268 ·published 2007-01-26 16:49 UTC
rendered paste body
#include <stdio.h>
#include <string.h>
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;
}