【问题标题】:char array prints wrong value in Cchar数组在C中打印错误的值
【发布时间】:2012-11-11 18:17:56
【问题描述】:

我现在被困在相同的代码上退出了一段时间。我正在尝试用从文本文件(ascii)中读取的字符填充 char 数组。但由于某种原因,当我 printf 字符数组时,它只显示字母 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 也是如此,它每次执行此函数时都会递增。

任何帮助将不胜感激。

【问题讨论】:

    标签: c arrays char printf


    【解决方案1】:

    您使用%c 打印一个字符,而是使用字符串说明符%s

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

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

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

    【讨论】:

      【解决方案2】:

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

      来自 printf man page

      c

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多