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

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

4

3 回答 3

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]);
     }
 }
于 2013-09-26T11:26:35.803 回答
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);
}
于 2013-09-26T11:44:34.920 回答
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;
}
于 2013-09-26T12:05:56.673 回答