各位可能在網上看到用以下函數可以將整數轉換為字符串:
itoa(); //將整型值轉換為字符串
ultoa(); // 將無符號長整型值轉換為字符串
請注意,上述函數與ANSI標准是不兼容的,很多編譯器根本不提供這幾個函數,本文就不介紹了,沒什么意義。
將整數轉換為字符串而且能與ANSI標准兼容的方法是使用sprintf()和snprintf()函數,在實際開發中,我們也是這么做的。
1、把整數/長整數格式化輸出到字符串
標准的C語言提供了atoi和atol函數把字符串轉換為整數和長整數,但是沒有提供把整數/長整數轉換為字符串的庫函數,而是采用sprintf和snprintf函數格式化輸出到字符串。
函數聲明:
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);
示例(book98.c)
/*
* 程序名:book98.c,此程序演示格式化輸出sprintf和snprintf函數。
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <string.h>
int main()
{
int ii=1024;
long ll=12345678901234;
char strii[21],strll[21];
memset(strii,0,sizeof(strii)); memset(strll,0,sizeof(strll));
// 把整數ii轉換為字符串,存放在strii中。
sprintf(strii,"%d",ii);
printf("strii=%s\n",strii); // 輸出strii=1024
// 把長整數ll轉換為字符串,存放在strll中。
sprintf(strll,"%ld",ll);
printf("strll=%s\n",strll); // 輸出strll=12345678901234
memset(strii,0,sizeof(strii)); memset(strll,0,sizeof(strll));
// 把整數ii轉換為字符串,存放在strii中,只保留前10個字符。
snprintf(strii,11,"%d",ii);
printf("strii=%s\n",strii); // 輸出strii=1024
// 把長整數ll轉換為字符串,存放在strll中,只保留前10個字符。
snprintf(strll,11,"%ld",ll);
printf("strll=%s\n",strll); // 輸出strll=1234567890
}
運行結果
2、注意事項
snprintf函數在unix和windows平台下的表現略有不同,在Linux平台下,保留size-1個字符,在windows平台下,保留size個字符。
3、版權聲明
C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道
如果這篇文章對您有幫助,請點贊支持,或在您的博客中轉發我的文章,謝謝。