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++中,楼主的写法都是错误的