Board logo

標題: [求助]在IAR 5.2 For MSP430上面遇到的問題 [打印本頁]

作者: swagman    時間: 2011-10-29 02:26     標題: [求助]在IAR 5.2 For MSP430上面遇到的問題

本帖最後由 swagman 於 2011-10-29 02:37 編輯

請問有冇師兄遇過同樣問題,在IAR Embedded Workbench IDE裡面,用C語言編程,定義了一個結構體,在Watch窗口看到結構體內一個Array的內容竟然包含了其他member的內容,以致隨後使用atof()函數將String轉為浮點數時得到錯誤的結果。

測試的程式如下:
#include <msp430x16x.h>
#include "stdlib.h"

struct
{
        unsigned char Index;
        unsigned char Salary[5];
        unsigned char WorkDay[2];
}Staff;

float _Salary;

void main(void)
{
        Staff.Index = 10;
        Staff.Salary[0] = '1';
        Staff.Salary[1] = '2';
        Staff.Salary[2] = '5';
        Staff.Salary[3] = '0';
        Staff.Salary[4] = '0';
        Staff.WorkDay[0] = '2';
        Staff.WorkDay[1] = '5';

        _Salary = atof(Staff.Salary);


IAR.jpg
上面的_Salary數值是錯的,正確應為1.2500E+4。

圖片附件: IAR.jpg (2011-10-29 02:37, 25 KB) / 下載次數 13
https://www.hkepc.com/forum/attachment.php?aid=1268436&k=1c24311d42ee341a0ab55ad0a431ab69&t=1782866452&sid=1gEqiLPiCIz


作者: 高級嘍囉    時間: 2011-10-29 02:55

回復 1# swagman


    試下:
        Staff.WorkDay[0] = 'x';
        Staff.WorkDay[1] = 'x';

    睇下會點。

    參考:http://linux.die.net/man/3/atof
          http://linux.die.net/man/3/strtol
作者: morris    時間: 2011-10-29 09:49

本帖最後由 morris 於 2024-3-22 04:23 編輯

......
作者: hknightlife    時間: 2011-10-29 13:30

agree. atof 對應string操作的. String (or more precisely, character array, because C does not have String) must be null terminated in C language.

個string尾冇null character 下話?
morris 發表於 2011-10-29 09:49

作者: swagman    時間: 2011-10-29 18:40

個string尾冇null character 下話?
morris 發表於 2011-10-29 09:49


一言驚醒,忽略了這個問題添,唔該晒師兄.





歡迎光臨 電腦領域 HKEPC Hardware (https://www.hkepc.com/forum/) Powered by Discuz! 7.2