휴.. 미칠노릇이네요=ㅂ=;

링크드 리스트로 다항식 곱셈을 구현하는중에 문제가 생겼는데요.

저는 파일에 있는 값 (input.txt라 하면)

그 안에 샘플값이

6 5 4 3  //첫번째 다항식 데이터
8 7 6 5  // 두번째 다항식 데이터

즉 6 5 4 3 이면 6x^5 + 4x^3이란 뜻이죠..

이런식으로 고정되있는줄 알았는데 제출을 할려고보니까 그게 아니더라고요=ㅂ=

9 8 7 6 5 4 3 2 1  // 첫번째 다항식 데이터
8 5 4 3 2 0  // 두번째 다항식 데이터

이런식으로도 읽어져야 한다라고 하네요=ㅂ=;;

배열이면 간단한데 링크드 리스트니까.. 지금짠 프로그램을 엎어야 하나 고민입니다.

fscanf를 어떻게 써야 하는지 조언을 구합니다;

특히, n을 안쓰고 줄 단위로 읽어지게끔 하는거도 조언을 구합니다;ㅁ;



--------------------------



그러니까, 기본적으로 다항식의 곱셈을 하는 프로그램인데,

링크드리스트를 써야하고, 배열을 사용하면 안됩니다.

input.txt에 있는 데이터 값을 받아서 결과물을 output.txt로 내는 것입니다.

밑에 있는 것으로는

6 5 4 3 // 첫번째 다항식. 6x^5 + 4x^3
8 7 6 5 // 두번째 다항식. 8x^7 + 6x^5

은 연산이 되지만

8 7 6 5 4 3 2 1 // 첫번째 다항식, 8x^7 + 6x^5 + 4x^3 + 2x^1
9 6 4 3 // 두번째 다항식, 9x^6 + 4x^3

은 불가능합니다.

typedef struct poly_STnode { /*<--poly node 구조체-->*/
        int coefficient;
        int exponent;
        struct poly_STnode *link; /*<--링크 필드 설정-->*/
} poly_STnode;

typedef struct { /*<--헤더 구성 구조체-->*/
        poly_STnode *head;
} poly_linkHead;


/*<-- poly list 생성 -->*/
poly_linkHead *polySL() {

        poly_linkHead *P;
        P = (poly_linkHead *)malloc(sizeof(poly_linkHead));
        P->head = NULL;
        return P;
}
.
.
.
.
.

등등등 해서 링크드 리스트를 구성하고요.

그 후에 메인에서 값을 받아서 할려고 했는데..


int main() {


        char *fname_i = "input.txt";

        FILE *input_d;
        if ((input_d = fopen(fname_i,"r"))==NULL){
                printf("파일이 열리지 않았습니다!!n");
                exit(1);

        }
        
        
/*<--곱셈 시작-->*/
        int c1 = 0, c2 = 0, c3 = 0, c4 = 0;
        int e1 = 0, e2 = 0, e3 = 0, e4 = 0;

        
        poly_linkHead *P1;
        poly_linkHead *P2;
        P1 = polySL();
        P2 = polySL();

/*<--첫번째 다항식-->*/

        fscanf(input_d,"%d %d %d %d",&c1,&e1,&c2,&e2);
        last_data_add(P1,c1,e1); //last_data_add();에 다항식 인자를 넣어서 계산가능
        last_data_add(P1,c2,e2); //링크드 리스트로 구성되어 있습니다.

/*<--두번째 다항식-->*/
        fscanf(input_d,"n%d %d %d %d",&c3,&e3,&c4,&e4);
        last_data_add(P2,c3,e3); //두번째도 마찬가지
        last_data_add(P2,c4,e4);

        fclose(input_d);
        


/*<--값출력-->*/

        printf("다항식의 곱셈 연산 : n");
        printList(P1); // 첫번째 다항식 받은값 출력
        printList(P2); // 두번째 다항식 받은값 출력
        printf("-----------------------------------n");
        fileOUTPUT(MULTIPLICATION_POLY(P1,P2));
//MULTIPLICATION_POLY(P1,P2)는 첫번째와 두번째 다항식의 곱을 구하는 함수
//그걸 파일로 아웃풋을 내기 위한 fileOUTPUT(); 출력함수

}


이렇게 되있습니다.

저가 실은 fscanf를 제대로 배우질 못해서-_-; 많이 어렵네요..

어떻게 하면 더 많은 인자를 받을 수 있을까요?

fscanf로 한줄씩 읽어서(즉 다항식 하나씩) 링크드 리스트에 저장하고,

연산을 하고 싶은데요.. 어떻게 할까요;?