배열의 첨자에 관해서...
글쓴이: 익명 사용자 / 작성시간: 목, 2002/07/11 - 1:15오전
어떤 문자열1을 입력 받아서 strlen()함수로 길이를 구했습니다.
또한 문자열2에다가도 다른 길이의 문자를 입력 받았습니다.
또한 strlen()함수로 길이를 구했습니다.
문제는 arry[]의 크기를 문자열1과 문자열2의 더한 값으로 하고 싶은데
되질 않네요.
예)
char *ptr1 = "abcdef";
char *ptr2 = "aaa";
int num1 = 0;
int num2 = 0;
num1 = strlen(ptr1);
num2 = strlen(ptr2);
char array[num1 + num2];
위와같은 식으로 하고 싶은데... 당연히 안되겠죠? array의 크기를
넣어 줄 수 있는 방법이 있을까요? 위는 그냥 제가 한거고 임의로
문자를 입력 받게 해서 할려고 그러는데...
Forums:
Re: 배열의 첨자에 관해서...
이런경우 쓰는게 malloc나 calloc죠.
array = (char *)malloc((num1 + num2)*sizeof(char));
이렇게 바꿔주시면 되겠네요.
포인터는 배열처럼 인덱싱 할 수 있는건 아시죠?
처리하고 나서 free 하는거 잊지 마시고요..
그럼..
Re: 배열의 첨자에 관해서...
김석훈 wrote..
어떤 문자열1을 입력 받아서 strlen()함수로 길이를 구했습니다.
또한 문자열2에다가도 다른 길이의 문자를 입력 받았습니다.
또한 strlen()함수로 길이를 구했습니다.
문제는 arry[]의 크기를 문자열1과 문자열2의 더한 값으로 하고 싶은데
되질 않네요.
예)
char *ptr1 = "abcdef";
char *ptr2 = "aaa";
int num1 = 0;
int num2 = 0;
num1 = strlen(ptr1);
num2 = strlen(ptr2);
char array[num1 + num2];
위와같은 식으로 하고 싶은데... 당연히 안되겠죠? array의 크기를
넣어 줄 수 있는 방법이 있을까요? 위는 그냥 제가 한거고 임의로
문자를 입력 받게 해서 할려고 그러는데...
C 문자열에 실제로 필요한 공간은 strlen의 리턴값 + 1 입니다.
마지막에 '\0' = 0 = NULL 을 넣어서 문자열의 끝을 나타내니까요.
문자열을 편하게 다루시려면 ANSI C++ 라이브러리의 string 타입을 쓰시는 걸 권장합니다.
예를 들어,
string str1 = "abcde", str2 = "aaa", str;
str = str1 + str2;
assert (str == "abcdeaaa");
assert (str[4] == "e");
assert (str[5] == "a");
또한 가변 크기의 배열을 쓰시려면,
동적할당 배열 대신 vector 컨테이너의 사용을 권장합니다.
vector vec(num1 + num2);
댓글 달기