如何计算C中数组的元素?

时间:2013-09-26 11:14:24

标签: c arrays

#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]);
}
}

什么函数可以计算数组的元素?

3 个答案:

答案 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;
}