C语言程序各种各样的编码风格,我比较推崇的一种是K&R 书上的模式。下面是从《Unix Network Programming》上抄的一个样例,可以参看一下书写格式:
1 /* This is a C program templete. 2 */ 3 #include "unp.h" 4 5 int main(int argc, char **argv) 6 { 7 char *ptr, **pptr; 8 char str[INET_ADDRSTRLEN]; 9 struct hostent *hptr; 10 11 while (--argc > 0) { 12 ptr = *++argv; 13 if ( (hptr = gethostbyname(ptr)) == NULL) { 14 err_msg("gethostbyname error for host: %s: %s", 15 ptr, hstrerror(h_errno)); 16 continue; 17 } 18 printf("official hostname: %s\n", hptr->h_name); 19 20 for (pptr = hptr->h_aliases; *pptr != NULL; pptr++) 21 printf("\talias: %s\n", *pptr); 22 23 switch (hptr->h_addrtype) { 24 case AF_INET: 25 pptr = hptr->h_addr_list; 26 for ( ; *pptr != NULL; pptr++) 27 printf("\taddress: %s\n", 28 Inet_ntop(AF_INET, *pptr, str, sizeof(str))); 29 break; 30 31 default: 32 err_ret("unknown address type"); 33 break; 34 } 35 } 36 exit(0); 37 }
1、程序定义写在同一行。有人把返回值单独写在一行,不过我比较喜欢在一行里写的: int main(int argc, char **argc);
2、函数体的大括号另起一行,如本例中第6行的样子。
3、数据定义与代码中间有一空行,如本例第10行。
4、while 语句, for 语句, if 语句后面的括号与while 或者 for 之间有一个空格。
5、循环体 或者 条件判断语句 之后的大括号,一个写在 while 这样的语句之后,一个写在最下面。如本例中第13 行 到 17行。
6、如果if 语句中有赋值的情况,则赋值的括号与最外面的括号之间有一个空格。如本例中第13行,if ( (hptr = …) == NULL)这个语句。
7、如果循环体之内只有一句话,那么可以写大括号也可以不写。