게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
문자열->문자배열 과정중 동적할당 오류..
게시물ID : programmer_22223짧은주소 복사하기
작성자 : PlayerH
추천 : 0
조회수 : 515회
댓글수 : 6개
등록시간 : 2018/03/24 00:26:46
char *STRING_to_CHAR(const string operand, const int operand_length) {
char *char_operand = new char[operand_length];

for (int i = 0; i < operand_length; i++) {
char_operand[i] = (operand.at(i));
}

return char_operand;

}

위 부분이 오류를 일으키는 핵심 부분인데요
string 자료형의 operand문자열을 입력받아서 문자배열로 바꾸는 함수를 만들려고합니다.
아래 사진처럼 12436895가 string으로 들어왔으면 문자배열로 똑같이 바뀌어야하는데
마지막에 쓰레기값이 계속 나타납니다. 


Cap 2018-03-24 00-23-25-344.png

해결책이 무엇일까요??
전체 추천리스트 보기
2018-03-24 00:38:16추천 0
char_operand 마지막에 null (\0) 넣으셔야죠...
댓글 1개 ▲
2018-03-24 01:06:53추천 0
char *STRING_to_CHAR(const string operand, const int operand_length) {
 char *char_operand = new char[operand_length + 1];
 //char_operand = (char*)calloc(operand_length,sizeof(char));

 for (int i = 0; i < operand_length; i++) {
  char_operand[i] = (operand.at(i));
 }
 char_operand[operand_length + 1] = '\0';
 return char_operand;

}

이렇게 null을 넣어줄수 있도록 배열크기를 1 크게 만들고, 마지막에 '\0'값을 넣어주는 거죠???
이렇게 하니 정상적으로 되네요
2018-03-24 02:04:43추천 0
윗글에 추가..

위의 방식이 아닌 동적 할당 배열에 대해서
Zero Fill 로 초기화를 하는 방법도 생각해 볼만한 방법.
댓글 2개 ▲
2018-03-24 09:46:55추천 0
동적할당할때 선언과 동시에 0으로 초기화 해준다는거죠??? 혹시 cmalloc을 이용하는 방법인가요???
2018-03-25 23:17:52추천 0
될 수 있으면 변수 선언과 동시에 초기화하는 버릇을 들이는 것이 좋습니다.
퍼포먼스에 큰 영향을 끼치지 않을 뿐더러 생각보다 많은 부분에서 의외의 변수로 작용하거든요.
2018-03-24 09:47:48추천 0
cmalloc이 아니라 calloc 이네요.
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호