안녕하세요.. <div><br></div> <div>c언어로 mysql에 쿼리문을 날려야하는데...</div> <div><br></div> <div>쿼리문이.. 종류가 꽤 많고 길이도 제각각이고 ... 엄청나게 많은 반복 작업을 해야하는지라...</div> <div><br></div> <div>어떻게해야 메모리도 아끼고 속도도 빠르게 할 수 있을까 이런저런 잔머리를 굴리는 중 입니다.</div> <div><br></div> <div>그러던 중 sprintf 함수를 알게되었는데요..</div> <div><br></div> <div><br></div> <div>int a = 10;</div> <div>int b = 20;</div> <div>char buf[100] = {0, };</div> <div><span style="font-size:9pt;line-height:1.5;">sprintf(buf, "%d %d text", a, b);</span></div> <div>-> 쿼리문 입력</div> <div><br></div> <div><br></div> <div>이렇게 했습니다.</div> <div><br></div> <div>문제는 text의 길이가 제각각이라... 이 길이를 받아서 그때마다 동적할당으로 buf의 크기를 늘였다 줄였다를 하고 싶습니다.</div> <div><br></div> <div><div><span style="font-size:9pt;line-height:1.5;">int a;</span></div> <div>int b;</div></div> <div>char *buf;</div> <div>-> 반복문 시작</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>a = 10;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>b = 20;</div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">buf = (char *)malloc(sizeof(int) * </span><span style="font-size:9pt;line-height:1.5;">sprintf(buf, "%d %d text", a, b)+1);</span></div> <div><span style="font-size:9pt;line-height:1.5;"><span class="Apple-tab-span" style="white-space:pre;"> </span></span><span style="font-size:9pt;line-height:1.5;">sprintf(buf, "%d %d text", a, b);</span></div> <div></div> <div></div> <div></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>-> 쿼리문 입력</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>free(buf);</div> <div>-> 반복문 끝</div> <div><br></div> <div><br></div> <div>............생각해보니까 이러면 안되긴 하겠네요. free로 날려버린걸 어떻게 다시 동적할당 하겠어요........</div> <div><br></div> <div>그냥 char buf[1000]; 으로 해버려야 하는 걸까요........ ㅠㅠ</div> <div><br></div> <div>아니면 반복문 안에서 매번 동적 할당을 해주는 함수를 만들어서 호출하는 형태로 가야할까요?</div> <div><br></div> <div>그것보다... 입력하고자 하는 문자열의 길이를 매번 저런식으로 2번씩 sprintf 함수를 호출해야 알 수 있을까요?</div> <div><br></div> <div>다른 좋은 방법이 있는지 모르겠습니다. ㅜㅜ 살짝 힌트만 주시면 열심히 찾아보겠습니다!</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.