linux下sprintf_s函數的替代


windows平台下線程安全的格式化字符串函數sprint_s並非標准C函數,因此linux下無法使用,但可以使用snprintf函數代替。

/*函數原型:*/
int snprintf(char *dest, size_t n, const char *fmt, ...);

/*函數說明: 最多從源串中拷貝n-1個字符到目標串中,然后再在后面加一個0。所以如果目標串的大小為n的話,將不會溢出。
函數返回值: 若成功則返回存入數組的字符數,若編碼出錯則返回負值。
推薦的用法:*/
void f(const char *p)
{
    char buf[11]={0};
    snprintf(buf, sizeof(buf), "%10s", p); // 注意:這里第2個參數應當用sizeof(str),而不要使用硬編碼11,也不應當使用sizeof(str)-1或10
    printf("%sn",buf);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM