| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1776 人关注过本帖
标题:求助帖【C语言数组】
只看楼主 加入收藏
凉烟劫婠
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-10-25
结帖率:0
收藏
 问题点数:0 回复次数:11 
求助帖【C语言数组】
图片附件: 游客没有浏览图片的权限,请 登录注册

我定义数组长度为9,然后给九个数,但是我输出数组的时候显示数组溢出。
搜索更多相关主题的帖子: C语言 数组 输出 显示 溢出 
2018-01-26 17:23
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10538
专家分:42927
注 册:2014-5-20
收藏
得分:0 
0...8
2018-01-26 17:33
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10538
专家分:42927
注 册: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
快速回复:求助帖【C语言数组】
数据加载中...
 
   



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

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