同事写的,教我怎么写一个真正好的程序,
程序看起来清晰、明白、标准,不得不好好学习一下人家的编码风格
/*
* file.c – example code of file operation
*
* Copyright 2005 XXXX Co.,Ltd.
* All rights reserved.
*
* XXX XX <XXX@XXXcom>, March 2006
*
* This file contains some example code of file operation.
*
* set tabstop=4
*/
#include <stdio.h>
#include <errno.h> /* 使用errno及相关函数要在包含相应的头文件,
同样,使用其它的c库资源(变量、函数等)也要包含
相应的头文件 */
#define MY_FILE ("/tmp/aaa") /* 将程序中使用的字符串常量、数值常量定义
为宏,这样以后修改程序时会比较方便 */
#define BUF_LEN (5)
int main() {
FILE *fd;
char s[BUF_LEN]; /* 此处使用BUF_LEN宏,而不是5 */
int retval = 0; /* 定义变量时初始化其值,这样可以减少很多出错的可能 */
fd = fopen(MY_FILE, "r"); /* 此处使用MY_FILE宏,而不是直接使用"/tmp/aaa" */
if (!fd) { /* 要判断fopen操作是否成功 */
fprintf(stderr, "open file %s failed: %d: %s\n",
MY_FILE, errno, strerror(errno));
/* 将errno、strerror(errno)等信息输出到标准错误 */
return 1; /* 函数正确返回时一般返回值为0,否则为非零 */
}
else {
memset(s, 0, BUF_LEN); /* 使用字符串数组前要将其清零 */
retval = fread(s, 1, BUF_LEN-1, fd);
if (ferror(fd)) { /* 要判断fread操作是否成功 */
fprintf(stderr, "read file %s failed: %d: %s\n",
MY_FILE, errno, strerror(errno));
fclose(fd); /* 任何函数返回前都不能忘记收尾工作,关闭文件句柄
释放空间等 */
return 1;
}
}
printf("%d characters read: %s\n", retval, s);
fclose(fd);
return 0;
}
不知道是贴出来排版的问题还是本来的代码注释就比较乱,我习惯写代码时注释尽量也对齐的.
hehe 原来是这样写的,后来我懒得排版,所以注释显得有些乱:)