我有一個數組(readingreg [4]),它用十六進制數字填充。我的目標是將數據類型轉換爲字符串。我看過一些建議,似乎sprintf是要走的路。sprintf沒有給出預期值
這是我的嘗試:
sprintf(server0, "0x%02X", readingreg[0]);
printf("This is element 0: %s\n", server0);
sprintf(server1, "0x%02X", readingreg[1]);
printf("This is element 1: %s\n", server1);
sprintf(server2, "0x%02X", readingreg[2]);
printf("This is element 2: %s\n", server2);
sprintf(server3, "0x%02X", readingreg[3]);
printf("This is element 3: %s\n", server3);
printf("This is element 0: %s\n", server0);
printf("This is element 1: %s\n", server1);
printf("This is element 2: %s\n", server2);
printf("This is element 3: %s\n", server3);
這裏是我的輸出:
This is element 0: 0x4A
This is element 1: 0xAA
This is element 2: 0xAA
This is element 3: 0xA0
This is element 0: 0
This is element 1: A0
This is element 2: xA0
This is element 3: 0xA0
在這一點上,我是在什麼樣的sprintf爲我做了很困惑。我的預期輸出是server0 - server4都保留其字符串值。任何想法爲什麼這是發生?
這裏是程序的簡化版本:
readingreg[0] = 4A;
readingreg[1] = AA;
readingreg[2] = AA;
readingreg[3] = A0;
char server0[1];
char server1[1];
char server2[1];
char server3[1];
完整的程序是超過1000行代碼所以我提供應足以編譯和運行。
server0-3如何初始化?看起來像指向堆棧分配單個字符而不是緩衝區...? – 2014-09-03 20:45:00
'serverx'變量聲明是問題的關鍵。不要將它們排除在您發佈的代碼之外。事實上,發佈一個完整的程序會如此困難,以至於我們所需要做的就是複製/粘貼到我們的代碼編輯器中並運行它? – PaulMcKenzie 2014-09-03 20:47:05
請發佈一個[SSCCE](http://sscce.org),可以按原樣進行復制/粘貼和編譯。 – 2014-09-03 20:54:05