变量 '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];
不断收到错误 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];