小心snprintf的坑

小心snprintf的坑

函數介紹

int snprintf(char*str, size_t size,constchar*format, ...);

函數說明

從字符串中拷貝size-1個字符到目標串中,然後再在後面加一個0。

char buf[10];
snprintf(buf, 3, "%s", "123");
printf("buf = %s\n", buf);

結果爲: buf = 12;

並不是我們想的:buf = 123;原來snprintf拷貝三個字節,會保留最後一個字節自動賦0,也就是說當你snprintf只拷貝一個字節的時候,實際上什麼也沒拷貝,只是在目標串中寫了個0;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章