标题:求助帖【C语言数组】
只看楼主
凉烟劫婠
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-10-25
结帖率:0
 问题点数:0 回复次数:11 
求助帖【C语言数组】

我定义数组长度为9,然后给九个数,但是我输出数组的时候显示数组溢出。
搜索更多相关主题的帖子: C语言 数组 输出 显示 溢出 
2018-01-26 17:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
0...8
2018-01-26 17:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
char a[9]={'1','2','3','4','5','6','7','8','9'}; //字符数组
char a[10]="123456789"; //字符串,结尾还有个'\0'
2018-01-26 17:37
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
没发现溢出
2018-01-26 17:47
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
2018-01-26 17:50
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
所以使用strlen时,程序员必须确认参数字符数组中包含\0值,否则会出现不可预知后果。
2018-01-26 17:55
凉烟劫婠
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-10-25
得分:0 
回复 4楼 虫眼
编译器的问题吗?
2018-01-26 17:55
li384022
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:176
注 册:2017-12-29
得分:0 
#include"stdio.h"
#include"string.h"
main()
{
    int i;
    char a[9]="12345678" ;//我的编译器是这个结果是8    char a[9]="123456789"   结果是10   那什么时候是9??
    i=strlen(a);
    printf("%d",i);
    getch();
}
2018-01-29 12:18
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
strlen函数的缺陷,只有最后是\0才会准确.
2018-01-29 13:02
lulipro
Rank: 2
等 级:论坛游民
威 望:1
帖 子:11
专家分:60
注 册:2016-4-5
得分:0 
C语言的字符串是一种特殊的char数组。特殊在于:这个数组中必须至少要有一个'\0'作为字符串结束的标志。因此要正确存放123456789这9个字符,你还需要为末尾的'\0'预留一个空间,因此数组的长度应该为10才对。
2018-02-02 13:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484470-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 2.005516 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved