int로 저장된 배열을 스트링으로 저장하는 방법.
글쓴이: nazuna / 작성시간: 금, 2013/05/24 - 1:22오후
전에 체인코드 관련해서 질문을 올린 적이 있는데요.
현재 체인코드를 계산해서 txt 파일로 뿌려보는 것까지는 되었습니다.
체인코드도 잘 나오고요.
그런데 이 코드가 지금 double chain_code[100] 크기의 배열에 저장되어 있는데
계산을 완료한 최종 시점에는 소수점 이하가 없는 수로 저장되어 있어
파일로 뿌릴때는 (int)chain_code 처럼 (int)를 붙여서 소수점 이하를 버리고(코드니까)저장했습니다.
이번에는 프로그램 내에서 처리하기 위해 인자로 전달받은 포인터에 저장하려고합니다.
그런데 자꾸 쓰레기 값이 저장되서 고민입니다..
포인터로 전달받는 도중에 문제가 있는건가 싶어서 합친 것을 포인터로 넘기지 않고 바로 파일로 뿌려보아도 쓰레기 값이고요.
스트링으로 합치는 과정에서 문제가 있는것같은데 왜 그러는지를 모르겠습니다.
itoa((int)chain_code[],char,10) 로도 해보고 미리 int 형에 저장해서 itoa(int,char,10)도 해보고요.
ssteam도 strcat도 다 쓰레기 값이 나오네요.
(int)로 하던 int 형에 미리 담아서 그 int를 넣어주던 다 문제입니다..
보다 근본적인 다른 문제가 있는것 같은데 그것을 못찾겠습니다.
int를 스트링에 하나로 합쳐 저장할 때 유의점이나 위 방식의 오류를 지적해 주시면 감사하겠습니다..
Forums:
int 를 스트링에 합쳐 저장할 때의 유의점은..
int 를 스트링에 합쳐 저장할 때의 유의점은.. 글자 그대로 해석하여 답을 해드리면 그렇게 하지마세요 라고 말씀드리고 싶네요.
숫자 1 과 숫자 23 을 합쳐서 "123"으로 저장하시겠다는 건지 의도 파악이 잘안됩니다. 차라리 코드를 보여주시는 편이 나을 듯 싶네요.
지금 코드가 랩실에 있어서
지금 코드가 랩실에 있어서(어째선지 제 컴퓨터에선 코드가 에러가 나서..) 지금은 없는데
OnlineString 이라는 클래스에서 void line_coding 이라는 함수가 for문으로 4번 반복이 됩니다.
이유는 숫자 4의 경우나 5 같은 경우 입력되는 이미지에 따라서 최대 4번까지 분리를 해야 하더군요.
line_coding에서는 double chain_code[100] 크기의 배열에 for문안의 if문으로 각도를 비교해서 차례로 정수로 입력되구요.
double형인 이유는 앞서 연산에서 쓰이는 변수들이 전부 double 형이고 최종적으로 계산된 각도가 chain_code에 저장된 뒤 각도를 계산했던 for문 바깥의 마지막 작업에서 코드로 바꾸게끔 구현했습니다.
이 chain_code[]에 입력된 값을 매 반복시 마다 OnlineString 으로 가져가서 합치려고 했습니다.
의도는 말씀하신 대로 숫자 1과 숫자 23을 합쳐 123 을 만드는 것이 맞구요.
이 글을 올리고도 쭉 찾아보니 다들 int를 스트링에 저장하지 말라고 하네요..
이유도 자세히 설명된 글이 있어서 위험하다는걸 알게 됬습니다.
그렇다면 이 경우에는 어떻게 출력을 해야 할지 모르겠네요.
가능하면 텍스트파일로 뽑지 말고 프로그램 내에서 메시지 박스로 뽑아내고 싶은데 말입니다..
메시지 박스로 뽑으려 한 이유는 원래는 이미지 옆에 텍스트로 출력하려 했는데
도무지 자식창의 코드를 못찾아서요..리소스 보기에도 없고..
월요일 즈음이라면 코드로 다시 올려보도록 하겠습니다.
댓글 달기