首页 > 解决方案 > 为什么在 c 中打印字符串数组不提供相同的输出?

问题描述

当最后一个字符与数组的下一个元素的第一个字符匹配时,给出最后一个字符的输出重复。是什么原因,应该怎么解决?

左边是程序右边是输出

#include <stdio.h>

int main(void) {
  int i ;

  char fact_char[13][2] = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};

  for(i = 0; i < 13; i++){
    printf("%s\n", fact_char[i]);
  }

  return 0;
}

输出


I
IVV
V
IXX
X
XLL
L
XCC
C
CDD
D
CMM
M

标签: carraysstringcharacter

解决方案


c 中的字符串以 null 结尾。为了表示“IV”,您实际上是将“I”、“V”和“\0”存储在内存中。当您打印一个两个字符的字符串时, printf 将继续写入,直到它在内存中找到下一个空终止符,它恰好在下一个(单个字符)字符串中。

要解决这个问题,只需让它

fact_char[13][ 3 ]


推荐阅读