1. 程式人生 > >STM32學習筆記3——怎樣將整型變數轉換為字元變數 然後串列埠 或者LCD傳送出來(STM32) 以及sprintf的用法

STM32學習筆記3——怎樣將整型變數轉換為字元變數 然後串列埠 或者LCD傳送出來(STM32) 以及sprintf的用法

u8 b;         unsigned char c[3]; b=123; c[0]= (unsigned char)((b/100)); c[1]= (unsigned char)((b/10)); c[2]= (unsigned char)(b); for( i=0;i<3;i++) { USART_SendData(USART1,c[i]); //這個是無法輸出的 while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); }-

可使用:printf("%d",b); 

或者將上面個的輸出改成 

    USART_SendData(USART1,c[i]+0x30);  即可

還可以將資料變數改變成字串

sprintf 的用法

為了更加的熟悉字串操作的函式,所以把相應的函式積累如下:
(1)sprintf()函式:把格式化的資料寫入某個字串

sprintf函式現在用的最多的就是用來各種型別轉換成字串的應用。

標頭檔案:stdio.h

函式原型:int sprintf( char *buffer, const char *format, [ argument] … ) ;
返回值:字串長度(strlen)
除了前兩個引數型別固定外,後面可以接任意多個引數。而它的精華,顯然就在第二個引數:

在格式化字串上,printf 和sprintf 都使用格式化字串來指定串的格式,在格式串內部使用一些以“%”開頭的格式說明符(format specifications)來佔據一個位置,在後邊的變參列表中提供相應的變數,最終函式就會用相應位置的變數來替代那個說明符,產生一個呼叫者想要的字串。

sprintf 最常見的應用之一莫過於把整數列印到字串中,所以,sprintf 在大多數場合可以替代itoa

  //把整數123 列印成一個字串儲存在s 中。
  sprintf(s, "%d", 123); //產生"123"
  可以指定寬度,不足的左邊補空格:
  sprintf(s, "��", 123, 4567); //產生:" 123 4567"
  當然也可以左對齊:
  sprintf(s, "%-8d�", 123, 4567); //產生:"123 4567"
  也可以按照16 進位制列印:
  sprintf(s, "%8x", 4567); //小寫16 進位制,寬度佔8 個位置,右對齊
  sprintf(s, "%-8X", 4568); //大寫16 進位制,寬度佔8 個位置,左對齊
  這樣,一個整數的16 進位制字串就很容易得到,但我們在列印16 進位制內容時,通常想要一種左邊補0 的等寬格式,那該怎麼做呢?很簡單,在表示寬度的數字前面加個0 就可以了。
(2)strlen()獲取字元陣列或者是字串的長度的函式

這個函式比較的簡單,主要的作用是獲取陣列或者是字串的長度。

(3)strncat()函式:拼接兩個字串的函式


 原型:extern char *strncat(char *dest,char *src,int n);
 用法:#include <string.h>
 功能:把src所指字串的前n個字元新增到dest結尾處(覆蓋dest結尾處的'')並新增''。
 說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。
 返回指向dest的指標。www.2cto.com
(4)strcat()函式:作用也是拼接兩個字串
函式原型:extern char *strcat(char *dest,char *src);

用法:#include <string.h>

功能:把src所指字串新增到dest結尾處(覆蓋dest結尾處的'')並新增''。

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

返回指向dest的指標。
作者:liangxanhai