为了账号安全,请及时绑定邮箱和手机立即绑定

C语言结构体的问题

C语言结构体的问题

C
WANY2 2018-07-13 22:46:55
查看完整描述

3 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

这和结构体没关系呀。

错误提示说得很清楚啦:N 未初始化

你在第 14 行仅仅声明了 N,并未予以初值,那么这个局部变量 N 的初值是不确定的!

for 循环控制条件中有不确定的内容,当然不正确啦。

查看完整回答
1 反对 回复 2018-07-13
  • WANY2
    WANY2
    我想读取一个文件里的数据,但是现在不知道它有多少数据,然后将那些数据整合成结构体。那在不知道那个文件里有多少数据的情况下,我该如何定义数组的长度N呢。
?
onemoo

TA贡献883条经验 获得超454个赞

我看到了你在私信中的提问。我不知道你是否看到了我上次回复中的解答? 还是说没有看懂?

我来指出一下我上个回复中的重点:

我在上次回复中的第一段说明了:11 行这样声明的数组类型是不完备的,其能容纳的元素数是未知的。关键是:不是说你能用什么方法来得到数组大小,而是根本就不应该使用这样的数组! 

况且你截图中提到了 do while 也无法得出这个数组的大小


对于你这里的需求,我在回复的后面给出了两个常用的解决办法,请试着理解下。

第二个方法涉及“指针和数组的关系”及“动态分配内存”的知识,我不知道你是否学过这些。

如果学过了但看不明白,请说明你对这两句是如何理解的? 哪里不明白?

如果还没学过,那么请用第一个方法。如果你觉得第一种方法不适用,那说明你目前的知识储备不足以解决这个问题,请待深入学习后再来处理。


P.S. 对于回答问题,在这里回复能更好地排版,比在私信中交流更合适。

查看完整回答
反对 回复 2018-07-14
?
onemoo

TA贡献883条经验 获得超454个赞

再次看了一下代码,你在第 11 行声明的 SI 数组也不太好。这样大括号留空的声明表示它是一个“未知大小”的数组,算是不完备类型。你不知道它到底能容纳多少个元素的。不要这样运用数组。想要使用数组,一定要有明确的大小。


好吧,你遇到的情况是“目前没法用一个确定的整型常量来指定数组大小”,一般有几种处理办法:

  1. 如果你能知道元素数最多不会超过某一上限的话,省事的做法是直接声明一个上限大小的数组

  2. 如果完全不知道会有多少个元素,那就用 malloc 之类的函数来动态申请内存。

    比如先申请 10 个大小,发现不够用时再扩大 10 个,又不够时再扩大......

查看完整回答
反对 回复 2018-07-14
  • 3 回答
  • 0 关注
  • 1175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信