小编zan*_*iku的帖子

为什么使用"%s"格式说明符printf一个char数组在数组中的最后一个char之后输出额外的无意义值?

我偶然发现了我很好理解的这种行为.

我错误地在程序结束时编写了以下内容,以便在以下数组中打印元素char:

printf("output: %s",outputText[]);
Run Code Online (Sandbox Code Playgroud)

当我应该(并最终)迭代数组并打印每个元素时:

for(int i = 0; i < textLength; i++){

        printf("%c",outputText[i]);
    }
Run Code Online (Sandbox Code Playgroud)

促使我实施后者的是我得到的输出.尽管初始化数组以限制字符outputText[textLength],确保数组中没有意外的元素,但是在实现前一代码时我的输出总是会被其他怪异的元素所占据,如下所示:

怪异的角色补充

我只是连续三次运行相同的程序,并在我的数组末尾附加了三个随机字符.

(编辑替换outputText[]- > outputText在第一个示例中.)

c arrays printf format-specifiers

-3
推荐指数
1
解决办法
653
查看次数

标签 统计

arrays ×1

c ×1

format-specifiers ×1

printf ×1