function(char* name)
{
char sql[50];
sprintf(sql, "select %s;", name);
}
sql이 보유 할 수있는 것보다 큰 이름의 경우 이름의 50 자만 sql에 복사되도록하는 가장 좋은 방법은 무엇입니까? (N 매개 변수가있는 sprintf)복사 할 수있는 최대 문자 수를 sprintf()와 동일하게합니까?
감사합니다.
function(char* name)
{
char sql[50];
sprintf(sql, "select %s;", name);
}
sql이 보유 할 수있는 것보다 큰 이름의 경우 이름의 50 자만 sql에 복사되도록하는 가장 좋은 방법은 무엇입니까? (N 매개 변수가있는 sprintf)복사 할 수있는 최대 문자 수를 sprintf()와 동일하게합니까?
감사합니다.
또한 크기 매개 변수를 사용하는 snprintf
있습니다 :
int snprintf(char *str, size_t size, const char *format, ...);
snprintf
N 문자를 인쇄 할 경우 Null 종료되지 않지만.
대부분의 컴파일러() 함수 현재 snprintf 있습니다.
원하는 snprintf().
int snprintf(char *str, size_t size, const char *format, ...);
사실, snprintf는 항상 출력을 널 종료합니다. 'strncpy'는 당신이 조심해야 할 함수입니다. –
일부 오래된 컴파일러 (C99 이전)에는 버퍼 한도에 도달하면 null이 종료되지 않는 문제가있었습니다. – richb