作者 主題: C 迴圈問題  (閱讀 2462 次)

0 會員 與 1 訪客 正在閱讀本文。

kinghun117

  • 可愛的小學生
  • *
  • 文章數: 15
    • 檢視個人資料
C 迴圈問題
« 於: 2009-09-18 11:37 »
請教各位大大 為什麼我的迴圈 0x54,0x00,0x01 to 0x54,0x00,0x00

只能跑一次 是不是語法有問題

請各位大大指點 謝謝 ^^~

#define HELD_DATA_SIZE 16
unsigned char  Held_data[HELD_DATA_SIZE];
unsigned short Held_data_read_point;
unsigned short Held_data_write_point;
unsigned short Held_data_size;

struct TAG_Convert_table {
        unsigned char source_size;
        unsigned char *source;
        unsigned char replace_size;
        unsigned char *replase;
};

const static unsigned char Convert_source_string0[] = {0x54,0x00,0x01};
const static unsigned char Convert_replace_string0[] = {0x54,0x00,0x00};

const static struct TAG_Convert_table Convert_table[] = {
    {sizeof(Convert_source_string0) - 1, Convert_source_string0, sizeof(Convert_replace_string0) - 1, Convert_replace_string0},
    {0                                 , NULL                  , 0                                  , NULL                   }
};
unsigned short i, j, k;

         if(!Held_data_size) {
             code_bf = next_dt_sub () ;
             Held_data[Held_data_write_point] = code_bf;
             Held_data_write_point++;

             for(i = 0; i < Convert_table.source_size; i++) {
                 for(j = 0; j < Held_data_write_point; j++) {
                     if(Held_data[j] != *(Convert_table.source + j)) {
                         break;
                     }
                 }
                 if(Held_data_write_point == j) {
                     if(Convert_table.source_size == j) {
                         for(k = 0; k < Convert_table.replace_size; k++) {
                             Held_data[k] = *(Convert_table.replase + k);
                         }
                         Held_data_size = k;
                         Held_data_write_point = 0;
                         Held_data_read_point = 0;
                     }
                     break;
                 }
             }
             if(!Convert_table.source_size) {
                 Held_data_size = Held_data_write_point;
                 Held_data_write_point = 0;
                 Held_data_read_point = 0;
             }
             continue;
         } else {
         code_bf = next_dt () ;
         }