sprintf函數是C語言中的一個字符串處理函數,用于將格式化的數據寫入一個字符串中。
sprintf函數的原型如下:
int sprintf(char *str, const char *format, ...);
其中,str是一個指向字符數組的指針,用于存儲格式化后的字符串;format是一個格式化字符串,用于指定輸出的格式;…表示可變參數,用于指定要格式化的數據。
sprintf函數根據format字符串中的格式化控制符,將可變參數轉換為字符串,并將結果存儲在str指向的字符數組中。
下面是一些常用的格式化控制符和其對應的轉換說明:
下面是一個示例代碼,演示了sprintf函數的用法:
#include <stdio.h>
int main()
{
char str[100];
int num = 123;
float fnum = 3.14;
char ch = 'A';
char name[] = "Tom";
sprintf(str, "num = %d, fnum = %f, ch = %c, name = %s", num, fnum, ch, name);
printf("%s\n", str);
return 0;
}
運行結果:
num = 123, fnum = 3.140000, ch = A, name = Tom
上述代碼中,sprintf函數將整數、浮點數、字符和字符串格式化為一個字符串,并存儲在str數組中。然后通過printf函數將該字符串打印出來。
需要注意的是,sprintf函數沒有對目標字符串的長度進行檢查,如果格式化后的字符串超過了目標字符串的長度,可能導致緩沖區溢出。為了避免這種情況,可以使用snprintf函數,它額外接受一個參數用于指定目標字符串的長度。例如:
snprintf(str, sizeof(str), "num = %d, fnum = %f, ch = %c, name = %s", num, fnum, ch, name);