struct inter
{
int num;
int th;
int *hum;
struct inter *next; //연결 리스트
};
--------
fscanf(fp,"%d %d", &num, &th);
hum = (int *)malloc(sizeof(int)*th);
for(loop2 = 0; loop2 < th; loop2++)
{
fscanf(fp,"%d",&hum[loop]);
printf("%d, %d, %d\n",num, th, hum[loop]); //디버그용
}
cur = createNode(num, th, hum);
if(cur == NULL)
exit(0);
head = appendNode(head, cur);
printList(head); //디버그용
loop++;
-------
파일 내의 값이
첫번째 값 - 고유번호, 두번째 값 - 자기 뒤에 있는 숫자의 갯수, 세번째 값부터 줄 끝까지 - 숫자
이고 이게 각자 공백으로만 구분됩니다.
--------
1 5 3 2 4 5 10
2 2 15 4
3 1 9
4 4 11 14 16 18
...(하략)
--------
이런식인데
이걸 두번째 값에 따라 세번째부터 줄 끝까지를 배열처럼 쭉 이어서 1->2->3-> ... 식으로 연결리스트를 만들려고 합니다.
나머진 생략하고 문제가 되는건 두번째 값에 따라 나머지 값들을 그 횟수만큼 파일로부터 읽어야하는데
fgets()를 써서 atoi()를 해보니 값을 잘못 읽어오는지
1, 5, 0
0, 3, 2
대충 이런식으로 되다가 오류가 나서 종료가 되고
위에 있는 fscanf()를 써보니 뭔가가 되기는 되는 모양인데
-----
잡다한부분 생략하면
2, 2, 15
2, 2, 4
no - 1, 5 -> 10, (쓰레기값), (쓰레기값), (쓰레기값), (쓰레기값)
no - 2, 2 ->
-----
10 뒤의 쓰레기값은 모두 같은 값이며 다음줄부터는 아예 공백입니다;; 그 10도 첫줄의 맨 마지막값이고..
이런식으로 나오다가 에러를 띄우면서 종료되고 에러 내용은 F5 디버그모드 기준
----
Windows가 testers.exe에서 중단점을 트리거했습니다.
힙이 손상되어 testers.exe 또는 여기서 로드한 DLL에 버그가 있을 수도 있습니다.
testers.exe에 포커스가 있을 때 사용자가 F12 키를 눌렀기 때문일 수도 있습니다.
자세한 진단 정보는 [출력] 창을 참조하십시오.
---- (출력창을 참조하라는 그 출력창에 나온 내용이 이겁니다.)
이렇게 나오고 3정도까지 가다가 중간에 종료됩니다. 1이나 2에서의 값을 체크했을때도 위에 보이는 것처럼 정상은 아닌듯했구요..;
저 코드를 짤 때 생각이 scanf로 앞의 두 값을 읽으면 두번째 값으로 루프문을 만들어 뒤의 값을 읽어서 동적 할당으로 배열삼아 만드는거였는데...-_-a
createNode()와 appendNode()에는 문제가 없는걸로 알고 있습니다.
free(hum)을 appendNode()의 다음에 넣으면 아예 다른 에러가 뜨고..;
질문의 핵심 내용은..
C/C++을 사용해서 파일로부터 첫번째 값, 두번째 값을 읽고 그 뒤의 나머지 값들을 두번째 값만큼의 크기의 배열(혹은 그 역할)을 만드는 방법..입니다.
출력 모양이라면 printList()시에
no - 1, 5 -> 3, 2, 4, 5, 10
no - 2, 2 -> 15, 4
no - 3, 1 -> 9
no - 4, 4 -> 11, 14, 16, 18
...
이런식으로 나오는게 목적입니다.
질문을 올려놓고도 질문이 이해가 가능한건지 잘 모르겠네요;;;;