파일 입출력 관련해서 동적할당으로 만들고 있는 도중이었는데 이상하게 동적할당 부분이 안받아지는 현상이 일어났다.
//한줄씩 읽어와서 temp[i]에 저장
for (int i = 0; i <= line_len; i++)
{
fgets(temp1, 100, fp);
writing[i] = (char*)malloc(strlen(temp1));
strcpy(writing[i], temp1);
}
코드의 이 부분이었는데 파일에서 읽어온 temp1의 값은 잘 출력이 되었지만 동적할당으로 받아온 writing[i]의 값이 안나오는 현상이 생겼다.
그래서 초기화를 이상하게 해줬나해서 strcpy말고 = 식으로 대입을 해봤는데 마지막줄만 계속해서 뜨는 현상이 생겼다.
이부분만 안고쳐지니까 이상하다 생각해서 인터넷에 나와 비슷한 다른 코드를 가져와서 실행해보니까 그 코드도 실행이 안되서 소스 파일이 이상한가? 생각했는데 천천히 살펴보니까
#include <stdlib.h>
동적할당은 사용하는데 제일 중요한 라이브러리를 안 받아와서 안되는 문제였다.
malloc이 아예 실행 안되면 모르겠는데 실행은 되는데 저렇게 되버리니까 못찾았다.
차이가 보이는가? 위가 stdlib.h 없을 때이고 아래가 있을 때이다.
위는 어디서 온건지 확인하려 ctrl + 좌클릭 해보니까 아무것도 안뜨더라 그냥 vs에서 자동으로 만들어준것 같았다.
간단한 실수때문에 오늘도 열심히 삽질을 했다.