#include <stdio.h>
#include <string.h>
int main()
{
char name[32][32];
char input[32];
int number;
int i;
for(i=0;i<10;i++)
{
fgets(input,sizeof(input),stdin);
sscanf(input,%s,name[i]);
}
//assume that we don't know variable name have 10 element of arrays.
//function to count how many elements of arrays to stored at number.
for(i=0;i<number;i++)
{
printf("%s",name[i]);
}
}
什么函数可以计算数组的元素?
答案 0 :(得分:1)
如何将目标字符串初始化为0,然后在打印时检查它们是否为空?
#include <stdio.h>
#include <string.h>
int main()
{
char name[32][32] = {0};
...
for(i=0;i<32;i++)
{
if(name[i][0]!='\0')
printf("%s",name[i]);
}
}
答案 1 :(得分:0)
C不保留此类信息。开发人员可以通过某种方式了解数组中的项是否有效。通常,这是通过选择“无效值”来完成的,该值是在真实数据中永远不会发生的值。另一种方法是单独维护计数。
这对于学习C来说都很好。如果你是为现实世界做这件事,你会更好地使用像列表这样的数据结构。如果您使用的是C ++,我建议您学习STL。
简单的C解决方案就是这样的。 “empty”的值用于表示输入中不会正常发生的任何值。您可以将#define更改为您想要的任何其他值,如“-----”或“。”。我们首先将整个数组初始化为“空”
#include <stdio.h>
#include <string.h>
#define MAX_ITEMS 32
#define MAX_LENGTH 32
#define EMPTY "empty"
int main(void)
{
char name[MAX_ITEMS][MAX_LENGTH];
char input[MAX_LENGTH];
int i;
for(i = 0; i < MAX_ITEMS; i++)
{
strcpy(name[i], EMPTY);
}
for(i = 0; i < 10; i++)
{
fgets(input, MAX_LENGTH, stdin);
sscanf(input, "%s", name[i]);
}
for(i = 0; strcmp(name[i], EMPTY) && i < MAX_ITEMS; i++)
{
printf("%s\n", name[i]);
}
return(0);
}
答案 2 :(得分:0)
这是一个解决方案 但我不知道为什么它在尝试创建array_length函数时不起作用。
#include<stdio.h>
int main(){
int a[]={1,2,3,4,5,6,7,8,9,0};
int len;
len = sizeof(a)/sizeof(*a);
printf("Length is %d\n",len);
return 0;
}