.What The XxX 2023-03-16 07:08 采纳率: 100%
浏览 107
已结题

【C语言】打印字符型数组出现方框


#include <stdio.h>
#include <string.h>

int main()
{
    char s[10];
    int len = sizeof(s)/sizeof(s[0]);
    int i;
    printf("请输入你的字符串: ");
    scanf("%s",&s);
    
    for(i = 0; i < len; i++)
    {
        printf("s[%d]=%c\n",i,s[i]);
    } 
}

img

问题描述:
定义了一个字符型数组,通过scanf输入字符后再通过for循环打印出来,但打印出来的第8个数组元素显示出一个方框。如果printf里使用%d输出,有时候显示的是数字1,ascii码对应的是SOH(start of headline),标题开始。有时候显示的是48,意思是字符0。
请问大家这是什么原因导致的呢?

img

  • 写回答

3条回答 默认 最新

  • 少林and叔叔 2023-03-16 07:40
    关注

    这是因为你定义了一个数组char s[10];该字符型数组的长度为10个字节,但该自字符型数组未进行初始化,因此10个字节的数组的值是未知的。
    scanf("%s",&s);
    使用以上命令,由于只输入了5个字符,因此s[0]s[4]的值分别是字符‘a’,‘p’,‘p’,‘l’,‘e’,而s[5]s[9]的值依旧没有赋值,因此s[5]~s[9]的值依旧是未知的。
    所以你打印出来,后面的值就是不确定的值了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月16日
  • 修改了问题 3月16日
  • 创建了问题 3月16日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部