2014-02-20 58 views
0

我嘗試將0x000xff的字節值賦給具有函數的C字符串,並且還報告生成的字符串的長度。我試圖朝着正確的方向前進,但似乎陷入了一個相當令人沮喪的問題。通過引用將字節加載到C字符串中

下面的代碼顯示了我嘗試將字節值加載到變量中(通過引用傳遞)charset。代碼編譯並運行,但不輸出任何內容。但是,如果我取消註釋loadCharset for循環中的第二行,它將打印所有需要的值。我似乎錯過了如何將這些值分配給C字符串。

int loadCharset(int setname, char charset[], int *setlen){ //string sName){ 
    for (int i = 0x00; i <= 0xff; i++){ 
     charset[i] = i; 
     // printf("%c", i); 
    } 
    // *setlen = 256; 
} 

int main() { 
    char charset[256]; 
    int* setlen; 
    loadCharset(1, charset, setlen); 
    printf("%s", charset); // yields no output 
} 
+1

字符集中的第一個字符值爲0,所以printf將立即停止打印「字符串」。嘗試在循環中打印值,或者至少跳過第一個(0)元素。 – ooga

回答

3

charset陣列的第一個元素是0x00,它是一個字符串結束,告訴printf停在那裏 - 不打印任何東西。

fwrite(charset, sizeof (charset), 1, stdout); 

,它允許你指定數組的lenght明確地印:替換爲printf

2

預料到你的下一個問題:

只要你取消註釋// *setlen = 256;你就會遇到麻煩。

這是你想要什麼:

int main() { 
    char charset[256]; 
    int setlen; 
    loadCharset(1, charset, &setlen); 
    printf("%s", charset); // yields no output 
} 

注意&之前setlen。聲明中的setlen之前不再有*

+0

你真了不起:) –

相關問題