C语言编码小技巧
1. 退出程序
其中"EXIT_FAILURE"和"EXIT_SUCCESS"包含在头文件 <stdlib.h> 中。
exit(EXIT_FAILURE); //异常退出,相当于exit(1)
exit(EXIT_SUCCESS); //正常退出,相当于exit(0)
还有一种就是 ' _exit( ) ' ,它和 ' exit( ) ' 的区别就是,前者退出进程会清理I/O缓冲区,后者直接结束进程进入到内核中。
2. 注释(相当于“删除”)一段代码
除了 " // " 、" /* " 以外,比较保险的注释方式为(statements表示被注释的部分)
#if 0
statements
#endif
* 因为如果这段代码内部原先就有注释存在,这样做就会出现问题,要从逻辑上删除一段C语言代码,更好的办法如上。
3. 数据溢出问题
while(gets(input)!=NULL)
许多同学可能会这样写,但其实它可能会存在 input 数据溢出的现象,因此最好用 fgets
while(fgets(input)!=NULL)
4. 增加程序的可读性
为了增加程序的可读性,我们可以引用 #define 来定义比如把 0 用 OUT , 1 用 IN 表示
补充:这边对于 define 的用法还存在一种解读,它可以用于多个相同字面符的同时修改
5. Oj 1062 避免读取无关 '\n' 小技巧
scanf(" %c%c%c",&a,&b,&c);
可以搭配循环使用,原题如下
1062: ASCII码排序 (----循环 字符)
题目描述
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。输入
输入数据有多组,每组占一行,有三个字符组成,之间无空格。输出
对于每组输入数据,输出一行,字符中间用一个空格分开。样例输入
qwe asd zxc样例输出
e q w a d s c x z
因为每次想要输入下一行的时候,都会先输入换行符,所以需要加一个空来吸收,代码如下:
#include<stdio.h>
int main()
{
char a,b,c,d;
while(scanf(" %c%c%c",&a,&b,&c)!=EOF)
{
if(a>b) d=a,a=b,b=d;
if(a>c) d=a,a=c,c=d;
if(b>c) d=b,b=c,c=d;
printf("%c %c %c\n",a,b,c);
}
}
6. 输入若干值时的用法
想必你也注意到:
while(scanf(" %c%c%c",&a,&b,&c)!=EOF)
这是用于输入若干值时的用法,与 它等价的还有:
while(~scanf(" %c%c%c",&a,&b,&c))
7. while搭配 ' , ' 的用法( 感受一下 ' , ' 的灵活和魅力!)
while(scanf(" %d",&n)!=EOF,n!=-1) ; //适用于末尾以 ' -1 ' 作为结尾的函数
8. const的用法(跟在哪个后面,哪个不变)
int const *pci; //指向整型常量的指针
int *const pci; //指向整型的常量指针
9. 最精简字符串赋值
while(*to++=*from++); //因为 '\0' 的ASCII码为 0 !
10. 求数组元素个数
sizeof(array)/sizeof(array[0])
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。