【发布时间】:2017-04-12 08:55:45
【问题描述】:
我是 C 的初学者,经过长时间的努力,我完成了我的 1500 行 C 代码。它运行完美并产生了预期的结果,但是当我尝试添加比测试更多的输入时,我遇到了故障.
更具体地说,我设法在结构数组中找到了问题的根源。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define ROWS 5000
#define MAXLOGGERS 26
struct data
{
int day;
int month;
int year;
int hour;
int minute;
int second;
float value;
float temp;
float hum;
};
int main()
{
printf("Enter the number of loggers that you want to import: ");
int n = 10;
while (n > MAXLOGGERS)
{
printf("You can input data from maximum %d loggers: ", MAXLOGGERS);
scanf("%d", &n);
}
struct data mydata[n+1][ROWS];
printf("\n\nSuccess!!\n");
}
现在,当我使用 n = 10 或更少时,程序按预期完成。当我将 n 更改为 11 或更多时,它会崩溃。
我怀疑结构数组的声明有问题,但我真的想不通。
我们非常欢迎任何帮助! 谢谢(:
【问题讨论】:
-
after long time and effort I finished my 1500 rows code in C....好吧,再想想你的学习方法。 -
while (n > MAXLOGGERS)对任何n < 26都是错误的,那么您如何准确输入输入? -
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码.没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建minimal reproducible example。
-
检查你的最大堆大小值
-
您是否看到您分配
5000 * (n + 1 ) * ( sizeof(int) * 6 + 3 * sizeof(float))大约为:5000 * 12 * ( 2 * 6 + 3 * 4 ) = 1 440 000 字节。 [估计的 int 和 float 的大小,可能因每个系统而异]。检查您可以分配的最大大小;)