鱼C论坛

 找回密码
 立即注册
查看: 554|回复: 9

[已解决]C语言

[复制链接]
发表于 2020-4-15 17:05:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>

int main()
{
    char a[5] = "abcde";
    printf("%s",a);
}


为什么显示结果是abcde#?
最佳答案
2020-4-15 17:20:05
本帖最后由 耻思lhj 于 2020-4-15 17:27 编辑
#include<stdio.h>
#include<string.h>

int main()
{
    char a[5] = "abcde";
        printf("%s\n",a);
    printf("size: %d\n",sizeof(a));
        printf("len: %d\n",strlen(a));
        
        return 0;
}
输出:
abcde
size:5
len:6
你的数组大小为5,长度为6.因为会补个'\0'。
有#是可能因为你的空间不够了,你的编译器没给你补个‘\0’,printf(“%s”)会继续往后走,直到遇到‘\0’。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-15 17:07:09 | 显示全部楼层
我这里没有问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:08:29 | 显示全部楼层
截张图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:10:53 | 显示全部楼层
本帖最后由 耻思lhj 于 2020-4-15 17:12 编辑

你错误是因为,char a[6] = "abcde";才是正确的,因为会给你在最后面补一个‘\0’。
你后面有个#可能是因为他后面有个‘\0’。
字符串输出%s,会在遇到‘\0’停止。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 17:19:49 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:20:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 耻思lhj 于 2020-4-15 17:27 编辑
#include<stdio.h>
#include<string.h>

int main()
{
    char a[5] = "abcde";
        printf("%s\n",a);
    printf("size: %d\n",sizeof(a));
        printf("len: %d\n",strlen(a));
        
        return 0;
}
输出:
abcde
size:5
len:6
你的数组大小为5,长度为6.因为会补个'\0'。
有#是可能因为你的空间不够了,你的编译器没给你补个‘\0’,printf(“%s”)会继续往后走,直到遇到‘\0’。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:21:09 | 显示全部楼层

把 char[5] 改成 char[6] 试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:21:36 | 显示全部楼层

C语言字符串会自动在末尾加一个'\0',所以 a 的大小应该设为 6 才对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:22:14 | 显示全部楼层
字符串的长度是你所看到的长度+1
"abcde"的长度是6不是5,因为字符串都有一个结尾符'\0'
所以你将此字符串放到字符数组a[5]中是会出问题的。导致没有结尾字符了,
那么输出的时候就会有各种乱码,直到偶然遇到了某个单元刚好是结尾字符'\0'才会结束。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 17:28:33 | 显示全部楼层
有则加之,无则加免
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 06:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表