gpt4 book ai didi

c - 未完全填充的数组的大小

转载 作者:行者123 更新时间:2023-11-30 17:40:36 25 4
gpt4 key购买 nike

我编写了这段代码,从文件中获取值,将它们转换为二进制,并打印出其二进制数有多少位。但我错了

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


int main()
{
FILE *p1;
p1=fopen("InputFile.txt","w");
int t=10,bin[30],i;
unsigned int a;
int *bi;
while(t--)
{
printf("Enter a Number : ");
scanf("%u",&a);
fprintf(p1,"%u\n",a);
}
t=10;
fclose(p1);
p1=fopen("InputFile.txt","r");
while(t--)
{
fscanf(p1,"%u",&a);
for(i=0 ; a>0 ; a=a/2 , i++)
{
bin[i]=a%2;
}
for(i=size;i>=0;i--)
printf("%d",bin[i]);
printf("\n");
printf("%lu\n",sizeof(bin)/sizeof(int));
}

return 0;
}

这会给出错误的输出。事实上,它给出了数组的最大大小。

我可以将 i 打印为二进制数的大小。但是是否有任何预定义的函数来计算是否将多少个值传递到一个大尺寸的数组中?

最佳答案

不,SizeOf 始终会为您提供分配给变量/内存结构的内存总量。您必须自己跟踪写入 bin[30] 数组的数据量。您可以通过保留一个计数器并在 for 循环中递增它来做到这一点:

for(i=0 ; a>0 ; a=a/2 , i++)
{
bin[i]=a%2;
}

关于c - 未完全填充的数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21398080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com