concatenate
및 NUL
너비가 포함 된 문자열을 종료하는 것이 적절한 방법인지 궁금합니다. null 종결 추가 하나가 있기 때문에문자열과 snprintf를 C로 연결
#define FOO "foo"
const char *bar = "bar";
int n = 10;
float f = 10.2;
char *s;
int l;
l = snprintf (NULL, 0, "%-6s %-10s %4d %4f",FOO, bar, n, f);
s = malloc (l + 4); // should it be the number of formats tags?
if (s == null) return 1;
sprintf (s, "%-6s %-10s %4d %4f", FOO, bar, n, f);
유지 보수 목적으로'snprintf'와'sprintf' 둘 다에서 사용되는 하나의 형식 문자열을 정의하는 것이 좋습니다. 그것은 한 곳에서 변경된 것이고 다른 곳에서는 변경되지 않았다면 정말 짜증이납니다! –
좋은 아이디어 인 것 같습니다. 샘플 코드를 게시하는 것이 가능합니까? 감사합니다 – Lucas
그냥'const char * fmt_str = "% -6s % -10s % 4d % 4f";'와 같은 것을 선언하고 두 곳에서 그것을 포맷 문자열로 사용하십시오. –