【发布时间】:2015-10-21 20:23:42
【问题描述】:
当我尝试运行以下代码时:
#include <stdio.h>
void main()
{
char *a[10] = {"hi", "hello", "how"};
int i = 0, j = 0;
a[0] = "hey";
for (i = 0;i < 10; i++)
printf("%s", a[i]);
}
它给了我输出:
heyhellohow(null)(null)(null)(null)(null)(null)(null)
而当我在 printf 语句中插入 '\n' 时:
#include <stdio.h>
void main()
{
char *a[10] = {"hi", "hello", "how"};
int i = 0, j = 0;
a[0] = "hey";
for (i = 0;i < 10; i++)
printf("%s\n", a[i]);
}
它给了我以下输出:
hey
hello
how
Segmentation fault
我为此尝试阅读在线材料,发现这是因为格式说明符并由编译器自动将 printf 转换为 puts 和 puts > 无法识别“%s\n”,但我还是无法理解。谁能用简单的术语解释一下。
【问题讨论】: