lsmmay322   3년 전

c언어에서 먼저 char *str처럼 문자열을 받을 변수를 포인터로 설정해놓고

scanf("%s", str)로 문자열 입력을 받은 후 입력받은 문자열 크기만큼 str에 메모리를 동적할당 하는법은 없나요?

무조건 str을 넉넉하하게 동적할당을 받고 문자열 입력받는 수밖에 없나요?

아래 코딩처럼

위 코딩은 먼저 문자열 입력받고 메모리 크기를 변수에 넣어주는 순서

아래는 먼저 변수에 넣어줄 문자열 메모리 크기를 크게 잡고 동적메모리 할당 후 문자열 입력

제가 위 방식의 코딩은 몰라서 예를 들어서 짜본겁니다.

ckdgus2482   3년 전

버퍼가 없는 상태에서 입력을 받는다는게 말이 안되는 소립니다.

대부분의 문제에서 문자열 입력이 있는 경우 문자열의 최대길이를 명시하므로 그 길이에 맞게 버퍼를 만들어두면 됩니다.

만약 최대 입력 길이를 알 수 없는 경우라면 문자 혹은 고정길이 버퍼 단위로 읽어서 realloc 등을 통해 메모리 할당을 늘리는 식으로 구현해야합니다

lsmmay322   3년 전

오옷 realloc가 있군요. 그방법에 대해서 한번 공부해봐야겠네요!! 감사합니다 

댓글을 작성하려면 로그인해야 합니다.