C語言中的編碼小技巧
C語言編碼小技巧
1. 退出程序
其中"EXIT_FAILURE"和"EXIT_SUCCESS"包含在頭文件 <stdlib.h> 中。
exit(EXIT_FAILURE); ? ? ? ?//異常退出,相當于exit(1) exit(EXIT_SUCCESS); ? ? ? ?//正常退出,相當于exit(0)
還有一種就是 ' _exit( ) ' ,它和 ' exit( ) ' 的區(qū)別就是,前者退出進程會清理I/O緩沖區(qū),后者直接結(jié)束進程進入到內(nèi)核中。
2. 注釋(相當于“刪除”)一段代碼
除了 " // " 、" /* " 以外,比較保險的注釋方式為(statements表示被注釋的部分)
#if ? ?0 ? ? ? ? statements #endif
* 因為如果這段代碼內(nèi)部原先就有注釋存在,這樣做就會出現(xiàn)問題,要從邏輯上刪除一段C語言代碼,更好的辦法如上。
3. 數(shù)據(jù)溢出問題
while(gets(input)!=NULL)
許多同學可能會這樣寫,但其實它可能會存在 input 數(shù)據(jù)溢出的現(xiàn)象,因此最好用 fgets
?while(fgets(input)!=NULL)
4. 增加程序的可讀性
為了增加程序的可讀性,我們可以引用 #define 來定義比如把 0 用 OUT , 1 用 IN 表示
補充:這邊對于 define 的用法還存在一種解讀,它可以用于多個相同字面符的同時修改
5. Oj 1062 避免讀取無關(guān) '\n' 小技巧
scanf(" %c%c%c",&a,&b,&c);
可以搭配循環(huán)使用,原題如下
1062: ASCII碼排序 (----循環(huán) 字符)
題目描述
輸入三個字符后,按各字符的ASCII碼從小到大的順序輸出這三個字符。輸入
輸入數(shù)據(jù)有多組,每組占一行,有三個字符組成,之間無空格。輸出
對于每組輸入數(shù)據(jù),輸出一行,字符中間用一個空格分開。樣例輸入
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搭配 ' , ' 的用法( 感受一下 ' , ' 的靈活和魅力?。?/h3>
while(scanf(" %d",&n)!=EOF,n!=-1) ?; ? ? ? ?//適用于末尾以 ' -1 ' 作為結(jié)尾的函數(shù)
while(scanf(" %d",&n)!=EOF,n!=-1) ?; ? ? ? ?//適用于末尾以 ' -1 ' 作為結(jié)尾的函數(shù)
8. const的用法(跟在哪個后面,哪個不變)
int const *pci; ? ? ? ?//指向整型常量的指針 int *const pci; ? ? ? ?//指向整型的常量指針
9. 最精簡字符串賦值
while(*to++=*from++); ? ? ? ?//因為 '\0' 的ASCII碼為 0 !
10. 求數(shù)組元素個數(shù)
sizeof(array)/sizeof(array[0])
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語言 數(shù)據(jù)結(jié)構(gòu)之中序二叉樹實例詳解
這篇文章主要介紹了C語言 數(shù)據(jù)結(jié)構(gòu)之中序二叉樹實例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01C++ Invalidaterect()函數(shù)作用案例詳解
這篇文章主要介紹了C++ Invalidaterect()函數(shù)作用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08