我是C编程的新手,目前正在上大学。我遇到了这个错误,不确定在Google工作数小时后如何解决。我正在创建一个打印成绩报告的程序,并不断遇到此错误。
这是代码:
#include <stdio.h>
#include <stdlib.h>
int main (void)
{ char Name[20];
char cid1[5]="", cid2[5]="", cid3[5]="", cid4[5]="", cid5[5]="", cid6[5]="";
char Description1[20]="", Description2[20]="", Description3[20]="", Description4[20]="", Description5[20]="", Description6[20]="";
int hrs1 = 0, hrs2=0, hrs3=0, hrs4=0, hrs5=0, hrs6=0;
char grade1[1]="",grade2[1]="",grade3[1]="",grade4[1]="",grade5[1]="",grade6[1]="";
printf("Enter Students Name ");
gets(Name);
printf("Enter Class ID ");
scanf("%s", &cid1);
printf("Enter Class Description ");
gets(Description1);
printf("%s", Name);
printf("%s", cid1);
printf("%s", Description1);
system("pause");
}
最佳答案
您只能读取数组支持的内容。如果您声明一个char数组有5个字节(char cid1[5]
),那么您最多可以输入4个字符(第5个字符是空终止符)。如果输入更多,将破坏内存并收到该消息。gets
也是一种非常不安全的函数,可用于从输入中读取字符串,因为无法避免缓冲区溢出。 切勿使用它。使用fgets
代替stdin
。
关于c++ - 运行时检查失败#2-变量 'cid1'周围的堆栈已损坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14946437/