C語言把整數轉換為字符串


各位可能在網上看到用以下函數可以將整數轉換為字符串:

  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

作者:碼農有道

如果這篇文章對您有幫助,請點贊支持,或在您的博客中轉發我的文章,謝謝。


免責聲明!

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



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