C长度(填充)

时间:2013-11-23 07:32:59

标签: c arrays

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

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char name[10];
    puts("Write your name");
    scanf("%2s", name); //test

    size_t n = sizeof name / sizeof *name;
    printf("size: %d",n); //result 10

}

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

来自string.h的

strlen函数应该可以完成你的工作。

答案 2 :(得分:0)

一些基础知识:

OP:你为什么把%2s格式说明符放在scanf中?

------&GT;它允许您仅将字符串的前两个字符作为输出。         使用简单的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);

或者使用string.h库中包含的strlen函数来为你完成。

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