
对于字符数组
str[N],判断方法有以下三种:
第一种:用库函数strlen
len = strlen(str); // 数组长度
第二种:利用计数器
int i=0;
while(str[i++] != '\0'); // 数组str的长度为i
第三种:利用sizeof函数
len = sizeof(str)/sizeof(str[0]); // 数组长度对于其他类型的数组,都可以用字符数组的第三种方法,第三种方法是通用的。
你这个问题很含糊。
假设是可以解决的方式:type a[] = {}; // 这种情况就是不知道数组元素个数
,“”的意思是,对数组赋初值的初值个数不确定。type为任意正确的数据类型。
那么:sizeof(a) / sizeof(type)
就可以得到数组元素个数了。
但是,如果把这个数组的数组名,通过实参传递给其它函数了,那么,上面的 *** 作就是不正确的了。因为,所有的形参都只能是变量,绝对不可能是数组。例如:
void fun(type b[100])
{
// 表面上b是一个数组,其实b是一个type 的指针变量,只占用4B的存储空间。
printf("%d\n", sizeof(b));
// 上面的输出语句,其输出结果应该是4,无论type类型是什么。
}
所以,如果你确实不知道数组里有多少个元素,那么,应该说,很难对这个数组进行 *** 作。
上面所述都基于C语言,Java等不存在这样的问题。因为,在Java中,数组根本就是类类型,有length成员可以得到数组元素个数。
count():对数组中的元素个数进行统计;
sizeof():和count()具有同样的用途,这两个函数都可以返回数组元素个数可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0;
array_count_value():统计每个特定的值在数组$array中出现过的次数;
以语句dim a(3 ,-2 to 2 ,5)为例:
Option Base 1
Private Sub Form_Click()
Dim i As Integer, j As Integer, k As Integer
Dim count As Long
Dim a(3, -2 To 2, 5) As Integer
For i = LBound(a, 1) To UBound(a, 1)
For j = LBound(a, 2) To UBound(a, 2)
For k = LBound(a, 3) To UBound(a, 3)
count = count + 1
Next k
Next j
Next i
MsgBox count
End Sub 扩展资料:
vb常用函数:
Len(x)求字符串的长度(字符个数)
LenB(x)求字符串的字节个数
Mid(x,n1,n2)从x字符串左边第n1个位置开始向右取n2个字符
Left(x,n)从x字符串左边开始取n个字符
Right(X,n)从x字符串右边开始取n个字符
String(n,x)返回由n个首字符组成的字符串
Space(n)返回n个空格
Now返回系统日期和时间
Year(c)返回指定日期的年份
Minute()返回指定时间的分数
Chr(x)将数值(ASCII码)转换为字符
CBool(x)将数字字符串或数值转换成布尔型
参考资料来源:百度百科-Visual Basicint str[100];
gets(str); -- 错,gets 用于 char str[100]; 不能 int 型。
===============
一个数组x[]中 有多少个元素:
int x[]={1,2,3,4,5,6,7,8,9,10};
n = sizeof(x) / sizeof(int);
================
控制台输入 2 5 6 7回车 输出结果4(输入了4个数) ,用下法:
#include <stdioh>
int main()
{
int x[]={1,2,3,4,5,6,7,8,9,10};
int i, n,c;
n = sizeof(x) / sizeof(int);
printf("There are %d elem in the array\n",n);
printf("\nintput data\n");
n=0;
while(1){
if ( scanf("%d",&x[n]) ==1) n++; // 统计个数
c = getc(stdin);
if (c=='\n') break; else ungetc(c,stdin); // 判断是否输入结束符 \n到达
}
printf("you typed %d data:\n",n);
for (i=0;i<n;i++)
printf("%d ",x[i]);
return 0;
}
使用awk的内置函数split,将第三个字段根据分隔符“-”分割并存入数组,最后跟随$1和$2逐个打印。
$ echo "aaa 3 1-2-3-4-5" | awk '{n=split($3,a,"-");for(i=1;i<=n;i++)print $1,$2,a[i]}'aaa 3 1aaa 3 2aaa 3 3aaa 3 4aaa 3 5
汗,这个意思啊。用容器阿。
#include<vector>
vector<string> a;
apush_back(""A);
放多少都可以。
然后用
asize()就可以知道了。vector类是很强大的。用起来特别方便


评论列表(0条)