J*******3 发帖数: 1651 | 1 在用c写程序时,很多时候需要存储一些简单的数据,如果为此而用mysql数据库就有些
大才小用了,可以把这些数据以结构的形写入文件,然后再需要时读取文件,取出数据。
如下是定义函数的源文件和头文件:
源文件struct.c:
#include "struct.h"
//第一个参数是要写入的文件名,第二个参数是缓冲区,第三个参数是缓冲区大小,
第四个参数是打开文件流的形态,返回TRUE表示写入成功,返回FALSE表示写入失败
int writeStruct(const char *fileName,char *buffer,int bufferLen,char *mode){
int ret;
FILE *fileID = NULL;
fileID = fopen(fileName,mode);
if (fileID == NULL){
perror("fopen");
goto writeEnd;
}
rewind(fileID);
ret = fwrite(buffer,bufferLen,1,fi |
l*******9 发帖数: 177 | 2 这c code 的logic写得也太差了吧!
据。
){
【在 J*******3 的大作中提到】 : 在用c写程序时,很多时候需要存储一些简单的数据,如果为此而用mysql数据库就有些 : 大才小用了,可以把这些数据以结构的形写入文件,然后再需要时读取文件,取出数据。 : 如下是定义函数的源文件和头文件: : 源文件struct.c: : #include "struct.h" : //第一个参数是要写入的文件名,第二个参数是缓冲区,第三个参数是缓冲区大小, : 第四个参数是打开文件流的形态,返回TRUE表示写入成功,返回FALSE表示写入失败 : int writeStruct(const char *fileName,char *buffer,int bufferLen,char *mode){ : int ret; : FILE *fileID = NULL;
|
t****t 发帖数: 6806 | |
g***l 发帖数: 2753 | 4 我很多年没有看见用 go to的了. 特别是C里面的,只有教科书里面提到过这种用法. 从
来没有看见真正的程序里面用 go to.
【在 l*******9 的大作中提到】 : 这c code 的logic写得也太差了吧! : : 据。 : ){
|
m*****e 发帖数: 4193 | 5 Really, I only see textbooks recommend not to use it, and real projects use
it quite commonly.
【在 g***l 的大作中提到】 : 我很多年没有看见用 go to的了. 特别是C里面的,只有教科书里面提到过这种用法. 从 : 来没有看见真正的程序里面用 go to.
|
B******e 发帖数: 48 | 6 其实production code里面用得是很多的。当然不是指乱goto,而是达到以下几个目的:
1. 每个函数单一的出口(函数尾部)
2. 每个函数单一的cleanup,这样在出错处理时,集中处理能很好地避免内存泄漏等问题
3. 逻辑简单,不容易出现if大规模地嵌套,也不需要一些状态变量来从两重以上的循
环中退出
4. 代码易维护。多加一段代码一般不会影响以前代码的执行。
举个例子, 以上这几点都体现在下面的代码里。虽略显繁琐,但确实是我非常喜欢的一
种结构。
int ReadDataFromFile(char** ppbuf)
{
int ret = 0;
char* pbuf = NULL;
FILE* fp = NULL;
assert(ppbuf);
*ppbuf = NULL;
if (!(fp=fopen(...))) {
ret = -1;
goto cleanup;
}
if (!(pbuf=malloc(...))) {
ret = -1;
goto cleanup;
【在 g***l 的大作中提到】 : 我很多年没有看见用 go to的了. 特别是C里面的,只有教科书里面提到过这种用法. 从 : 来没有看见真正的程序里面用 go to.
|
g*****g 发帖数: 34805 | 7 多重循环里面直接往最外层跳用goto很清晰。
【在 g***l 的大作中提到】 : 我很多年没有看见用 go to的了. 特别是C里面的,只有教科书里面提到过这种用法. 从 : 来没有看见真正的程序里面用 go to.
|
D*********s 发帖数: 555 | 8 错误处理还是用得到的,不过可读性差,能不用还是不用的好。
【在 g***l 的大作中提到】 : 我很多年没有看见用 go to的了. 特别是C里面的,只有教科书里面提到过这种用法. 从 : 来没有看见真正的程序里面用 go to.
|
bz 发帖数: 1770 | 9 这个就有点young and naive的意思了。。。。实际上goto用的非常多,尽管理论上
goto是可以被替代的。
【在 g***l 的大作中提到】 : 我很多年没有看见用 go to的了. 特别是C里面的,只有教科书里面提到过这种用法. 从 : 来没有看见真正的程序里面用 go to.
|