게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 sprintf을 가변적으로 활용하는 방법?
게시물ID : programmer_11815짧은주소 복사하기
작성자 : 물어라이코스
추천 : 0
조회수 : 2459회
댓글수 : 16개
등록시간 : 2015/07/02 15:14:43
안녕하세요..

c언어로 mysql에 쿼리문을 날려야하는데...

쿼리문이.. 종류가 꽤 많고 길이도 제각각이고 ... 엄청나게 많은 반복 작업을 해야하는지라...

어떻게해야 메모리도 아끼고 속도도 빠르게 할 수 있을까 이런저런 잔머리를 굴리는 중 입니다.

그러던 중 sprintf 함수를 알게되었는데요..


int a = 10;
int b = 20;
char buf[100] = {0, };
sprintf(buf, "%d %d text", a, b);
-> 쿼리문 입력


이렇게 했습니다.

문제는 text의 길이가 제각각이라... 이 길이를 받아서 그때마다 동적할당으로 buf의 크기를 늘였다 줄였다를 하고 싶습니다.

int a;
int b;
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 함수를 호출해야 알 수 있을까요?

다른 좋은 방법이 있는지 모르겠습니다. ㅜㅜ 살짝 힌트만 주시면 열심히 찾아보겠습니다!
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호