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