c - 为什么在 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
解决方案
c 中的字符串以 null 结尾。为了表示“IV”,您实际上是将“I”、“V”和“\0”存储在内存中。当您打印一个两个字符的字符串时, printf 将继续写入,直到它在内存中找到下一个空终止符,它恰好在下一个(单个字符)字符串中。
要解决这个问题,只需让它
fact_char[13][ 3 ]
推荐阅读
- flutter - 如何在 Flutter 中为咖啡馆/餐厅创建表格布局?
- asp.net - 如何在 asp.net/VB.net 中使用 curl
- python - If 语句始终为真(字符串)
- javascript - appscript中的回调
- spring-boot - 无法将类型“java.lang.String”的属性值转换为属性“date_added”所需的类型“java.util.Date”
- java - 字符串索引超出范围。Java 春季启动
- javascript - P5阵列交集
- tcp - 基于 tshark 间隔的输出中所需的时间戳
- html - 我可以为伪元素添加样式吗?
- c# - 搜索到的数据未加载到 asp.net 表单中的数据网格视图?