Posted on 2010-09-21 21:38
Tommy Liang 閱讀(369)
評論(0) 編輯 收藏 引用
snprintf函數并不是標準c/c++中規定的函數,但是在許多編譯器中,廠商提供了其實現的版本。
在gcc中,該函數名稱就snprintf,而在VC中稱為_snprintf。
由于不是標準函數,沒有一個統一的標準來規定該函數的行為,所以導致了各廠商間的實現版本可
能會有差異。今天也的的確確看到了差異,因為這個小小的差異是我的程序無法正常的處理數據。
這個小小的差異發生在count參數。在VC中,這個count就是要寫入的總字符串字符數,例如:
//VC
int main(int argc, char* argv[])
{
char buff[100];
printf("%d ",_snprintf(buff,10,"1234567890ab"));
printf("%s",buff);
return0;
}

//Linxu:gcc/g++
#include <stdio.h>
int main(int argc, char* argv[])
{
char buff[100];
printf("%d ",snprintf(buff,10,"1234567890ab"));
printf("%s",buff);
return0;
}