变量 'DM' 周围的堆栈已损坏

Stack around the variable 'DM' was corrupted

不断收到错误 Run-Time Check Failure #2 - Stack around the variable 'DM' was corrupted.

密码是

    int Repeats;
    double x_max;
    char DM[] = ""; 

    printf("\nPlease enter the number of repeats: ");
    scanf("%d", &Repeats);
    printf("\nPlease enter the length: ");
    scanf("%lf", &x_max);
    printf("\nAccount for Dark Matter?(Y/N) ");
    scanf("%s", DM);

    char lower_DM = tolower(DM[0]);

    DM[0] = lower_DM;

    printf("DM: %c", DM[0]);

我只希望它接受一个字符,Y/N,(为了比较降低它以便用户可以毫无问题地键入 Y、y、N 或 n)但是一旦完整代码运行,在最后它只是说 'DM' 周围的堆栈已损坏,我不确定为什么,因为我在开始时定义的单个字符数组中应该仍然只有一个字符?

谢谢

当您将 DM 声明为:char DM[] = ""; 时。数组字符的大小太小。对于是或否请求,您应该使用 char DM 就足够了。当您将 DM 声明为字符时,请使用 scanf,例如:

scanf(" %c", &DM);

但是如果你想使用字符串,你可以将 DM 声明为:

char DM[] = "Y";

char DM[2];