• slider image 71
  • slider image 72
  • slider image 73
:::


Browsing this Thread:   1 Anonymous Users






XC32 V1.32 swprintf() 問題
#1
高級會員
高級會員


查看用戶資訊
char cTemp[100];
flot A;

A = 12.3;
swprintf(cTemp,sizeof(cTemp),"Phase=%5.1f°",A);

請問以上程式使用 swprintf function.
本來以為cTemp 內容為 Phase=12.3°
結果 cTemp 內容為 Phase=%5.1f°
請問 swprintf 是否有問題?


從 Help 裡查到的說明如下:
int swprintf(wchar_t *restrict s, size_t n,
const wchar_t *restrict format, ...);

使用 MPLAB X IDE V2.5 + XC32 V1.32

發表於: 2016/10/27 10:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: XC32 V1.32 swprintf() 問題
#2
資深會員
資深會員


查看用戶資訊
其實呢! 我也不知道 swprintf 有沒有問題!?

因為看到了沒看過的 swprintf 的名稱所以看了以上問題的內容.

------------------------------------------------------------
如果只是想得到 cTemp 內容為 Phase=12.3°,

使用 sprintf(cTemp,"Phase=%5.1f°",A); 應該可以達到目的.


若還是想使用 swprintf(cTemp,sizeof(cTemp),"Phase=%5.1f°",A);

(例如程式是由其它已有的來源時.)

或許可以考慮加上重新定義的敘述, 將 swprintf 轉向 sprintf,

我有使用以下的部分試了一下...


#include "./xc.h"
#include "./stdio.h"
#include "./wchar.h"

char cTemp[100];
float A;

#define swprintf(stream,size_s,fmt,a...) __builtin_sprintf(stream,fmt,##a)

void main(void)
{

A = 12.3;
sprintf(cTemp,"Phase=%5.1f°",A);

A = 56.7;
swprintf(cTemp,sizeof(cTemp),"Phase=%5.1f°",A);

while(1);

}

發表於: 2016/10/27 15:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: XC32 V1.32 swprintf() 問題
#3
版主
版主


查看用戶資訊
我也用 sprint(f ) 來轉換,與 printf( ) 用法一模一樣,將列印輸出轉成字串存在 *指標裡。

只是那個溫度的符號"°" 因為 LCD 模組不支援此顯示字元一直都無法完成度的符號顯示。

發表於: 2016/10/27 16:14
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: XC32 V1.32 swprintf() 問題
#4
高級會員
高級會員


查看用戶資訊
感謝大家的回覆!
會使用 swprintf 主要是要做中文輸出(雙位元字串)

發表於: 2016/10/27 18:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]