2008-11-08 5 views
1

MYSQL C API를 사용하여 결과를 쿼리 할 때. 결과는 MYSQL_ROW 유형으로 returnd되며, MYSQL C API 문서에 따르면 쉽게 printf ("% s", row [0]) 할 수 있습니다. 그러나 행 [0]의 내용을 문자열 또는 char *로 전송하려면 어떻게해야합니까?mysql c api row [0] to string

답변

0

sprintf()을 사용할 수 있지만 행 [0]에 포함 된 문자열의 길이를 알아야 충분한 메모리를 할당 할 수 있습니다.

경고 : row [0]에 추가 Null 바이트가 포함되어 있으면 데이터가 잘릴 것이라고 BCS에서 올바르게 지적합니다. 행 [0]에 저장된 데이터의 양을 알고있는 경우 memcpy()을 사용하는 것이 더 좋은 해결책 일 수 있습니다.

+0

그러나 이렇게하면 처음에 멈추게됩니다. \ 0 – BCS

+0

감사합니다. 계정에 대한 답변을 업데이트했습니다. –

1

% s 형식은 char *을 허용하기로되어 있으므로 MYSQL_ROW는 실제로 char **이고 행 [0]을 가져 가면 char *가 생성됩니다.

sprintf() (또는 더 안전하지만 비표준 asprintf())를 사용하는 것이 어떤 이점이 있는지 어떻게 보이지 않지만 기분이 나아진다면 고려해 볼 수 있습니다.

+0

어떤 형태의 조작이라도 런타임 오류가 발생하는 것 같습니다. 문자열, strcpy, sprintf 등으로 캐스팅하십시오. 그래서 누구나 길을 찾았습니까? API가 사용자가 결과를 검색하여 인쇄 할 수는 있지만 메모리에 저장할 수는 없다고 믿는 것은 어렵습니다. – Steve