循环结束数组应该是:a[100]={1,2,3,4,5},用strlen测得该数组的长度应该是5,但是为什么会输出1呢?是因为a[5]的值不是空吗?求解答,如何改变代码,才能实现最后输出的数为5?
#include <stdio.h>
#include <string.h>
int main() {
int a[100];
for(int i=0;i<5;i++)
{
scanf("%d",&a[i]);//每一次的循环我输入1\n2\n3\n4\n5\n
printf("%d\n",a[i]);
}
printf("%d\n", strlen(a));//循环结束到这里数组应该是:a[100]={1,2,3,4,5},用strlen测得该数组的长度应该是5,但是为什么会输出1呢?
return 0;
}
strlen是用来测量【字符数组】的长度,遇到0x00就结束。用法错误,不能用在这里。
但你定义的a是int数组,
如果int占四个字节而且是小字节序,
输入1之后,存入内存里面就是 0x01 0x00 0x00 0x00,
按字符串的定义,长度就是1了
把int a[100]; 改为char a[100];
应该就是5了
可以采纳一下o
你的目的是什么?
strlen是获取字符串长度的.
你的数组是int, 已经分配了数组长度是100,
知识没赋值.
你设置了5个元素, 但是数组长度是不会变的.
你如果是计算有值元素的个数, 应该要再循环一遍
strlen()函数是字符串操作函数,这个数组是 int a[100]; 不适用。
记录数组的长度,没有什么好办法,只能用一个变量来记录,象上面代码里把 i 不要定义在for()里。
自己写个测整型数组长度的函数