1) 우선 "틀렸습니다"의 근본적인 원인은 11번 줄에 있습니다.
string = (char**)malloc(sizeof(char) * n); // 틀린 부분
string = (char**)malloc(sizeof(char*) * n); // 이렇게 고칩시다
각 string[i]
는 char*
형으로 쓰여질 예정이니, 최초의 동적 할당 또한 이에 맞추어야 합니다. 컴파일러나 실행 환경에 따라 다를 수 있지만 기본적으로 sizeof(char)
는 1byte 인데 sizeof(char*)
는 4byte 또는 8byte이기 때문에 문제가 발생하게 됩니다.
아래부터는 정답 유무와는 상관 없지만 참고하면 좋을 내용입니다.
2) 23번 줄에서 string[i]
에 동적 할당을 해주고 24번 줄에서 이를 input
로 갈아끼워주는데, 이렇게 하면 23번 줄의 동적 할당은 아무런 의미가 없어집니다.
3) malloc
함수는 stdlib.h
헤더에 선언되어 있고, strlen
함수는 string.h
헤더에 선언되어 있으니 두 헤더를 include해주는 것이 좋습니다.
ysh2328 2년 전
괜히 2차원배열로 까불고있는데 질문 드립니다 ㅠㅠ
이렇게 풀어 본 이유는 입력 다 받고 출력하는 형식으로도 풀어보고 싶어서 그랬습니다.
결과는 잘 나오는데 채점하면 틀렸다고 나오네요.
추정하는건 초기화 문제인거같은데 malloc을 calloc로 바꿔보고, length확인용 배열을 for문 안으로 집어넣어서 초기화 해봐도 계속 틀렸다고하네요..
부탁드립니다 ㅠㅠ