sprinf sprintf_s 的用法


函數功能:

將數據格式化輸出到字符串

函數原型:

int sprintf( char *buffer, const char *format [,argument] ... )

注意這里的buffer指針 指向的是格式化字符后寫入的首地址。

意思就是:格式化數據,並寫入字符串,這些方法已經不用,因為有更安全的方法可用。

參考sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l 這些函數。

sprintf_s函數原型

int sprintf_s( char *buffer, size_t sizeOfBuffer, const char *format [, argument] ... );

從原型上看:sprintf 和 sprintf_s 的差別就是sprintf_s多了一個參數sizeofbuffer。

兩個的具體差別,還是看MSDN上的說明:
一個差別是:sprintf_s 會檢查格式化字符的合法性,而sprintf只會檢查其是否是空指針;
另一個差別是:sprintf_s 設置了輸出buffer的大小。

sprintf_s()是sprintf()的安全版本,通過指定緩沖區長度來避免sprintf()存在的溢出風險。

程序示例:

#include<iostream>
using namespace std;

int main(){

	char s[1024];   //需要預先分配緩沖區
	sprintf(s, "%d %d %s", 123,2,"hello");

	cout << s << endl;

	system("pause");
	return 0;
}

輸出

123 2 hello

常見用法:


//把整數123 打印成一個字符串保存在s 中。
sprintf(s, "%d", 123); //產生"123"
//可以指定寬度,不足的左邊補空格:
sprintf(s, "%8d%8d", 123, 4567); //產生:" 123 4567"
//當然也可以左對齊:
sprintf(s, "%-8d%8d", 123, 4567); //產生:"123 4567"
//也可以按照16 進制打印:
sprintf(s, "%8x", 4567); //小寫16 進制,寬度占8 個位置,右對齊
sprintf(s, "%-8X", 4568); //大寫16 進制,寬度占8 個位置,左對齊
char filename[1024];//需要預先分配緩沖區
char path1[128] = "D:\\Program\\Tesseract-OCR\\tesseract.exe";
char path2[128] = "D:\\Program\\Tesseract-OCR\\";
char path3[128] = "D:\\Program\\Tesseract-OCR\\txt";
char path4[128] = "-l chi_sim";
sprintf_s(filename,"%s %s %s %s",path1,filepath,path3,path4);
system(filename);
 

轉自 https://blog.csdn.net/woshi_hujunjun/article/details/7296639
https://blog.csdn.net/tigernana/article/details/6916491
https://www.cnblogs.com/jeekun/archive/2013/01/15/2862051.html


免責聲明!

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



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