2011 国信蓝点的软件大赛就要开始了,所以这几天都是用标准c语言规则去写一些代码。
以前都是用.cpp编译的。由于大赛严格使用的是c语言,所以编译的时候都是用.c文件。
想不到用.c写的一个对文件内容进行归类的程序,竟然错误百出。这些错误如果是写成。cpp
的话是没有任何问题的。接下来我就谈谈我遇到错误的一些细节吧。
1、函数前不要插入临时变量
2、结构体中定义了二维数组或者定义了另一个结构体数组,在定义该结构体数组变量的时候。
只能自主的分配内存空间。也就是说,只能定义指针型结构体变量。然后自主的用malloc分配空间。
上图在结构体中定义成员为二维数组或结构体数组,在声明变量的时候用的是数组结构体。运行结构如下:
正确的做法应该是:
如果结构体中没有二维的指针或者数组结构体那么程序就可以这样写。
对于c语言最好在开头都定义好变量,如果在中途定义临时变量。会莫名奇妙的出错。
写惯了c++这种情况真的不爽啊。
最新解释:原来栈的存储区域分配空间是有限的,vs2010默认小于1M。当分配
空间大于1M是就会造成错误。
最后还有一个很奇怪的现象。
如果把函数改为memset(tempname, 0,256);memset(tempname, 0, 256);就不会出错。
原因可能就是有关内存分配方面、结构体怎么对齐。这种情况本人也很纳闷。希望有哪位高人指点一下。