2012-11-23 38 views
2

我被困在現在退出相同的代碼。我正在試圖用我從文本文件(ascii)中讀取的字符填充字符數組。但由於某些原因,當我在printf字符數組只顯示字母H.字符數組在C中打印錯誤值

代碼:

void append(char c) 
{ 
    //int len = strlen(cStr); 
    cStr[iCounter] = c; 
    cStr[iCounter + 1] = '\0'; 
    printf("char c:%c char array%c\n",c,cStr); 
} 

的字符數組(CSTR)是這個函數之外聲明,因爲我需要從不同的功能存取權限它。每次執行此功能時,iCounter都會增加。

任何幫助,將不勝感激。

回答

3

您打印%c使用字符串說明%s,而不是一個字符:

printf("char c:%c char array%s\n",c,cStr); 

注:iCounter沒有實際遞增:

cStr[iCounter++] = c; 
    cStr[iCounter] = '\0'; 
1

使用%s打印字符串。 %c用於打印唯一字符。

從printf的man page

Ç

如果沒有升改性劑的存在,int參數轉換爲 unsigned char時,產生的字符被寫入。如果存在修改器,則wint_t(寬字符)參數將通過調用wcrtomb(3)函數,將 轉換爲多字節序列,其中 轉換狀態將從初始狀態開始,並將生成的 多字節字符串寫入。