C语言程序无法运行,求解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言程序无法运行,求解相关的知识,希望对你有一定的参考价值。

代码网址在http://hi.baidu.com/xininbd/blog/item/8449bef64605cd1eb07ec555.html 运行出现Loaded 'ntdll.dll', no matching symbolic information found. Loaded 'C:\Windows\System32\kernel32.dll', no matching symbolic information found. Loaded 'C:\Windows\System32\KernelBase.dll', no matching symbolic information found. First-chance exception in 挂号系统.exe: 0xC00000FD: Stack Overflow.

参考技术A 堆栈溢出!!!
导致原因是你代码中的如下片段:
#define
SUBJECTS_NUM
10
//诊别资料最大数目
#define
DOCTORS_NUM
50
//医生资料最大数目
#define
MEDICINES_NUM
100
//药物资料最大数目
#define
MATCHES_NUM
500
//校对资料最大数目
#define
PATIENTS_NUM
1000
//病人资料最大数目
#define
REPORTS_NUM
5000
//挂号资料最大数目
。。。
struct
SUBJECT
subjects[SUBJECTS_NUM+1],
sub;
//诊别资料
struct
DOCTOR
doctors[DOCTORS_NUM+1],
doc;
//医生资料
struct
MEDICINE
medicines[MEDICINES_NUM+1],
med;
//药物资料
struct
MATCH
matches[MATCHES_NUM+1],
mat;
//校对资料
struct
PATIENT
patients[PATIENTS_NUM+1],
pat;
//病人资料
struct
REPORT
reports[REPORTS_NUM+1],
rep;
//挂号资料
就是定义的数组太大了。。(具体是5000那个比较恐怖,1000
VC6还可以)
解决办法:
增大堆栈容量就,具体看你用的什么编译器,相应加大堆栈容量就可以。
以VC6为例子:
默认VC6编译器堆栈容量1M.
更改方法如下:
工程
-->
设置
-->
连接
-->
"分类"
下拉菜单选
"输出"
-->
在堆栈分配栏的
"保留"
编辑框处写堆栈新容量,比如加大为
0x1000000。
然后即可。
补充回答:
if
(
!(fp_subjects
=
fopen(SUBJECTS_FILE,
"r"))
)
//开启诊别档

printf("无法开启诊别档,
程序终止!");
printf("\n");
exit(1);
你看看你代码目录下有相关文件没??这个好理解啊。。你没文件,打开文件当然不行了。。。另外你若问什么建档?还来什么格式,那你就真不应该了。。,
这个问题应该问你自己,
莫非你这代码是copy
来的,
然后根本不知道怎么回事,
不知道这代码是做什么的,
在你玩这代码的时候,你应该先去了解它是干什么的,这个问题真不应该问,
要问你也应该是有所了解的情况下,
有可能在代码实现的时候你看不懂,
然后你可以把相应你不懂的代码帖出来,
这样我可以给你分析。

以上是关于C语言程序无法运行,求解的主要内容,如果未能解决你的问题,请参考以下文章

C语言程序闪退!求解!在线等!

dev c 程序求解

c语言编程题目求解

两道c语言题目求解

C语言 递归程序 求解

c语言 求解逗号表达式的值