string函數python,關于sprintf函數詳解

 2023-12-06 阅读 33 评论 0

摘要:------------------------------------------------------------------------------------ 聲明:此文章為本人原創,未經本人允許,任何個人和單位不得將本文章用于商業用途 --------------------------------------------------------------------------

------------------------------------------------------------------------------------

聲明:此文章為本人原創,未經本人允許,任何個人和單位不得將本文章用于商業用途

------------------------------------------------------------------------------------

string函數python、一人之力,難免疏忽,若有錯誤,歡迎指正

sprintf函數:

變參函數,常用于把整數輸入到字符串中去

頭文件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'結束的字符串

  1. ?char?buffer[10];??
  2. ?? ?char?*a?=?"1234";??
  3. ??? ?char?*b?=?"5678";??
  4. ???? ?sprintf(buffer,?"%s%s",?a,?b);?
#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'的字符數組或字符串緩沖區:

  1. ? ?char?a[]?=?{'1',?'2',?'3',?'4'};??
  2. ? ?char?b[]?=?{'5',?'6',?'7',?'8'};??
  3. ??? ?char?buffer[10];??
  4. ???? ?sprintf(buffer,?"%.4s%.4s",?a,?b);??
  5. ??? ?printf("%s\n",?buffer); ?
#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);


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/191957.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息