首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

scanf会改变数组长度?解决办法

2013-12-13 
scanf会改变数组长度???#include stdio.h#include string.hmain(){char sex[3]234printf(sex长度

scanf会改变数组长度???

#include <stdio.h>
#include <string.h>
main()
{
char sex[3]="234";
printf("sex长度%d\n",strlen(sex));
scanf("%6s",sex);
printf("\nsex数组内容%s",sex);
printf("\nsex长度%d",strlen(sex));
}


我输入123456789
 输出:
sex长度3
sex数组内容123456
sex长度6
[解决办法]
char sex[3]="234";
你的 sex 不能用str系列函数了 
没 \0
[解决办法]
在c语言中数组的长度这个概念其实不存在
[解决办法]
scanf("%6s",sex);
输入时不能大于2
因为字符串char sex[3],申请的内存大小为3,除去结束符,只有两个字符可以保存
输入过大导致越界
[解决办法]
strlen不能用来计算数组长度,它用于计算输入的指针到下一个'\0'有几个字符
c++对于类型检查比c严格得多,虽然不管在c还是在c++中,楼主的写法都是错误的

热点排行