Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C数组长度(已填充)_C_Arrays - Fatal编程技术网

C数组长度(已填充)

C数组长度(已填充),c,arrays,C,Arrays,我想检查数组的大小(填充大小) #包括 #包括 int main() { 字符名[10]; 写下你的名字; scanf(“%2s”,名称);//测试 size\u t n=sizeof name/sizeof*name; printf(“大小:%d”,n);//结果10 } 我想得到结果4(用于测试)阵列的大小不会改变。它将始终显示为阵列分配的字节数。您需要的是字符串的长度,您可以使用函数strlen获取它一些基本信息: To OP:为什么要将%2s格式说明符放在scanf中 ------>它

我想检查数组的大小(填充大小)

#包括
#包括
int main()
{
字符名[10];
写下你的名字;
scanf(“%2s”,名称);//测试
size\u t n=sizeof name/sizeof*name;
printf(“大小:%d”,n);//结果10
}

我想得到结果4(用于测试)

阵列的大小不会改变。它将始终显示为阵列分配的字节数。您需要的是字符串的长度,您可以使用函数
strlen

获取它一些基本信息:

To OP:为什么要将%2s格式说明符放在scanf中

------>它只允许您将字符串的前两个字符作为输出。 使用简单扫描%s

现在答案是:

用字符串填充字符数组:

在内存阵列中(连续内存块)如下所示

       ---------------------------------------------------------
      | 't' | 'e' | 's' | 't' | '\0' |  Rest all are also '\0'  |                
       ---------------------------------------------------------
        0      1     2     4     5      6      7     8      9    
sizeof(array)将给出数组的大小,即这里的10,因为char的大小为1

sizeof(char*array)提供数组第一个元素的大小,即char(size=1)

结果是10。将数组大小除以其元素的大小将得到整个块的大小

要获取填充数组的大小,请执行以下操作:

搜索数组中的第一个空字符

   int i=0;

   for(i=0;i<10;i++)

       { if(name[i]==NULL) break; }

   printf("Size is %d\n",i);
inti=0;

对于(i=0;istring.h中的strlen函数,您应该完成您的工作。

因为名称是test=>scanf(“%2s”,name);//键入“test”我想在投票前检查OP的信誉点是很好的。根据OP的说法,他没有答案,并且在搜索中尝试并使用了错误的关键字。更准确地说,对于这样静态声明大小的数组,它将返回数组中的元素数。(这恰好等于类型为
char
的数组的字节数,但值得明确的是运算符所做的操作。)对于it数组,它将返回元素数的倍
   int i=0;

   for(i=0;i<10;i++)

       { if(name[i]==NULL) break; }

   printf("Size is %d\n",i);
  #include <string.h>   {......... printf("Size is %d\n",strlen(name));......}