C 程序编译时不会出错,但在执行过程中会出错
下面的代码编译得很好,但是当我运行它时,它会进入while循环,然后C 程序编译时不会出错,但在执行过程中会出错,c,pointers,struct,segmentation-fault,dynamic-memory-allocation,C,Pointers,Struct,Segmentation Fault,Dynamic Memory Allocation,下面的代码编译得很好,但是当我运行它时,它会进入while循环,然后SegFaults。输入文件是一个CSV文件。这个程序应该从CSV文件中获取数据并将其解析为一个结构,然后发送到一个函数,该函数以特定格式将数据打印到标准输出。机场指针为空,因此当您尝试设置它的元素时,您将取消引用空指针。若要修复,请按如下方式为其提供自动存储: airPdata airport; 并将其传递给printData,如下所示: printData(&airport) 或者将其分配给malloc: air
SegFaults
。输入文件是一个CSV文件。这个程序应该从CSV文件中获取数据并将其解析为一个结构,然后发送到一个函数,该函数以特定格式将数据打印到标准输出。机场指针为空,因此当您尝试设置它的元素时,您将取消引用空指针。若要修复,请按如下方式为其提供自动存储:
airPdata airport;
并将其传递给printData
,如下所示:
printData(&airport)
或者将其分配给malloc:
airPdata *airport = malloc(sizeof(*airport));
但是,当你完成后,一定要释放它
另外,正如您所看到的,仅仅因为您的C程序编译了,并不意味着它是正确的。C是非常不可原谅的,特别是关于内存,所以你一定要密切关注你如何处理内存,并可能考虑单元测试你的程序。第一件事:添加<代码>(ARC<2)/*错误*/<代码>程序无错误编译。但在执行过程中发生的错误——你应该意识到这是正常的行为我需要在今晚11:59之前交上来,但我不知道如何修复它。”“你知道,我应该有足够的时间进行测试和调试。这样的活动通常比编写代码并编译要花费更长的时间。airPdata只是指针,然后是null,然后这个结构的值也是指针。它应该是airPdata*airport=malloc(sizeof(airPdata));在每个循环周期中也有无焦耳缓冲区。