char数组在C中打印错误的值

时间:2012-11-23 11:27:10

标签: c arrays char printf

我现在被困在相同的代码上退出一段时间了。我正在尝试使用从文本文件(ascii)中读取的字符填充char数组。但由于某些原因,当我打印char数组时,它只显示字母H.

代码:

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);
}

char数组(cStr)在此函数之外声明,因为我需要从不同的函数访问它。 iCounter也是如此,每次执行此函数时都会递增。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

使用%c使用字符串说明符%s来打印一个字符:

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

注意:iCounter实际上并没有增加:

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

答案 1 :(得分:1)

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

来自printf man page

  

<强> C

     

如果不存在l修饰符,则将int参数转换为   unsigned char,写入结果字符。如果是l   如果存在修饰符,则转换wint_t(宽字符)参数   通过调用wcrtomb(3)函数来调用多字节序列   转换状态从初始状态开始,结果   写了多字节字符串。