c - 变量在循环中途发生变化,我不知道是什么问题

标签 c

我正在编写一些代码来计算 GPA,当我开始一个循环时,我的一个变量“numClasses”在循环中途将值更改为一个巨大的数字,我无法弄清楚发生了什么。

#include <stdio.h>

int main()
{
  float crdtHrs[] = {}; //Credit hours for this term
  float numClasses; //Amount of classes taken this term
  float qltyPoints[] = {}; //Quality points for term
  float classes[] = {}; //Array for class grades

  printf("Please enter total number of classes -> ");
  scanf("%f", &numClasses);

  float a = numClasses; //using new variable because this way the loop works

  for(int i = 1; i <= a; i++)
  {
    printf("\nGPA class #%d -> ", i);
    scanf("%f", &classes[i - 1]);
    printf("Credit hours for course -> ");
    scanf("%f", &crdtHrs[i - 1]);
    printf("%f", numClasses); //at some point of my loop numClasses changes value
  }

  return(0);
}

最佳答案

不错的零长度数组缓冲区溢出。繁荣。让我们安排一下,稍后声明数组,这样我们就可以给它们指定大小。

  printf("Please enter total number of classes -> ");
  scanf("%f", &numClasses);
  int a = (int)numClasses;

  float crdtHrs[a]; //Credit hours for this term
  float qltyPoints[a]; //Quality points for term
  float classes[a]; //Array for class grades

现在我们以正确的大小在堆栈上分配数组。

关于c - 变量在循环中途发生变化,我不知道是什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66021087/

相关文章:

Objective-c 中的 C++ 矩阵

c - Visual C++ 将 C 文件作为 C 处理

c - 包含两个双指针的结构体,访问第二个双指针时出现段错误

c - 解析已解析的字符串

C 编程 If 语句不起作用

c - 我在刽子手游戏中比较两个字符串无法正常工作

c++ - 与 C++ cin 语句等效的 C 是什么?

c - 从 v-usb 项目了解 usbjoy 库中的数据结构

c - 使用long int作为malloc的参数

c - 如何将 array_src 复制到> destination_array,从目标的某个索引开始? (使用 strcpy() )