即使寫了很多年的C,還是會遺忘這個用法,
呼叫 snprintf 時,第一個參數若指定 NULL,第二個參數指定 0 的話,可以用來決定緩衝區的大小,例如:
#include <stdio.h> int main(void) { int n = snprintf(NULL, 0, "%d %f %s %d %d %d %s", 25, 54.32E-1, "Thompson", 56, 789, 123, "56"); char str[n + 1]; // 記得最後會有個空字元 snprintf(str, sizeof(str), "%d %f %s %d %d %d %s", 25, 54.32E-1, "Thompson", 56, 789, 123, "56" ); printf("%s", str); return 0; }
因此,若要串接字串的話,也可以運用以上的方式,例如:
#include <stdio.h> int main(void) { char str1[] = "xyz"; char str2[] = "abc"; int n = snprintf(NULL, 0, "%s%s", str1, str2); char concated[n + 1]; snprintf(concated, sizeof(concated), "%s%s", str1, str2); printf("%s", concated); return 0; }
沒有留言:
張貼留言