2012-11-23 35 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)函数,将 转换为多字节序列,其中 转换状态将从初始状态开始,并将生成的 多字节字符串写入。