------------------------------------------------------------------------------------
聲明:此文章為本人原創,未經本人允許,任何個人和單位不得將本文章用于商業用途
------------------------------------------------------------------------------------
string函數python、一人之力,難免疏忽,若有錯誤,歡迎指正
頭文件:stdio.h
函數原型:int sprintf(char *buffer, const char *format, [argument]...)
snprintf函數用法詳解。參數:
(1)buffer:是char類型的指針,指向寫入的字符串指針;
(2)format:格式化字符串,即在程序中想要的格式;
(3)argument:可選參數,可以為任意類型的數據;可以不止一個參數
c語言snprintf函數。函數返回值:buffer指向的字符串的長度;
用處:
用法1:格式化數字字符串:在這點上sprintf和printf的用法一樣,只是打印到的位置不同而已,前者打印給buffer字符串,后者打印給標準輸出,所以sprintf也可以用來將整型轉化為字符串,比itoa效率高且如此地簡便~比如:sprintf(buffer, "%d", 123456);執行后buffer即指向字符串“123456”~
用法2:連接字符:
(a)連接以'\0'結束的字符串:
#include<stdio.h>
int main()
{char buffer[10];char *a = "1234";char *b = "5678";sprintf(buffer, "%s%s", a, b);printf("%s\n", buffer);return 0;
}
運行結果:
(b)連接結尾沒有'\0'的字符數組或字符串緩沖區:
#include<stdio.h>
int main()
{char a[] = {'1', '2', '3', '4'};char b[] = {'5', '6', '7', '8'};char buffer[10];sprintf(buffer, "%.4s%.4s", a, b);printf("%s\n", buffer);return 0;
}
運行結果:
(c)第二種情況的程序中,sprintf的format部分為"%4s%4s"或"%s%s",
運行結果均為:
(d)如果我們想動態獲取要處理的字符緩沖區長度,則將上面sprintf改為:sprintf(buffer, "%.*s%.*s", sizeof(a), a, sizeof(b), b);即可~
用法4:可以控制精度
char?str[20];
double?f=14.309948;
sprintf(str,"%6.2f",f);
用法5:可以將多個字符串連接成字符串
char?str[20];
char?s1={'A','B','C'};
char?s2={'T','Y','x'};
sprintf(str,"%.3s%.3s",s1,s2);
? %m.n在字符串的輸出中,m表示寬度,字符串共占的列數;n表示實際的字符數。%m.n在浮點數中,m也表示寬度;n表示小數的位數。
用法6:可以將多個數值數據連接起來。
char?str[20];
int?a=20984,b=48090;
sprintf(str,"=m",a,b);
str[]="20984?48090"
用法7:可以動態指定,需要截取的字符數
char?s1={'A','B','C'};
char?s2={'T','Y','x'};
sprintf(str,"%.*s%.*s",2,s1,3,s2);
sprintf(s,?"%*.*f",?10,?2,?3.1415926);?
用法8:可以打印出i的地址:
sprintf(s,?"%p",?&i);
相當于
sprintf(s,?"%0*x",?2?*?sizeof(void?*),?&i);
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态