[求助]在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。

回復 1# swagman


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

    睇下會點。

    參考:http://linux.die.net/man/3/atof
          http://linux.die.net/man/3/strtol

TOP

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

......

TOP

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

TOP

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


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

TOP