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));......}