MasterdetailPage
显然,数组中有7个数字,为什么说100?
答案 0 :(得分:3)
不,数组有100个元素。您可能只写了其中一些(20,假设您的fread
工作正常),但这不会改变数组大小。
将250ml倒入1L水壶中没有什么不同。壶的尺寸不会因为它没有满而神奇地减少75%。
在任何情况下,您看到的七个数字(实际上一个数字,七位数)与写入数组的内容无关。在大多数情况下,表达式array
将衰减到该数组的第一个元素的地址。因此,您看到的数字是所在的数组,而不是它所拥有的数据。
答案 1 :(得分:2)
C中的数组不是动态的。您对数组大小的计算基于其静态类型。它的静态类型实际上是100个元素。
如果您希望系统跟踪实际存在的元素数量,请使用其他语言编写,或使用此信息明确保留变量。
答案 2 :(得分:0)
你说这句话
printf("%i\n", arrays);
输出6421876
你声称是7个数字,但它没有按照你的想法行事。您正在将arrays
的地址传递给printf
函数并告诉它int
,但结果没有任何用处。
您计算数组大小,是数组中元素的总数,而不是实际读取的元素数。如果您想知道从文件中读取了多少整数,您必须查看fread
的返回值,该值告诉您从文件中读取了多少项。您要求20
,但该文件可能没有包含那么多。
size_t ints_read = fread(arrays, sizeof(int), 20, fp);