C語(yǔ)言中的編碼小技巧
C語(yǔ)言編碼小技巧
1. 退出程序
其中"EXIT_FAILURE"和"EXIT_SUCCESS"包含在頭文件 <stdlib.h> 中。
exit(EXIT_FAILURE); ? ? ? ?//異常退出,相當(dāng)于exit(1) exit(EXIT_SUCCESS); ? ? ? ?//正常退出,相當(dāng)于exit(0)
還有一種就是 ' _exit( ) ' ,它和 ' exit( ) ' 的區(qū)別就是,前者退出進(jìn)程會(huì)清理I/O緩沖區(qū),后者直接結(jié)束進(jìn)程進(jìn)入到內(nèi)核中。
2. 注釋(相當(dāng)于“刪除”)一段代碼
除了 " // " 、" /* " 以外,比較保險(xiǎn)的注釋方式為(statements表示被注釋的部分)
#if ? ?0 ? ? ? ? statements #endif
* 因?yàn)槿绻@段代碼內(nèi)部原先就有注釋存在,這樣做就會(huì)出現(xiàn)問(wèn)題,要從邏輯上刪除一段C語(yǔ)言代碼,更好的辦法如上。
3. 數(shù)據(jù)溢出問(wèn)題
while(gets(input)!=NULL)
許多同學(xué)可能會(huì)這樣寫,但其實(shí)它可能會(huì)存在 input 數(shù)據(jù)溢出的現(xiàn)象,因此最好用 fgets
?while(fgets(input)!=NULL)
4. 增加程序的可讀性
為了增加程序的可讀性,我們可以引用 #define 來(lái)定義比如把 0 用 OUT , 1 用 IN 表示
補(bǔ)充:這邊對(duì)于 define 的用法還存在一種解讀,它可以用于多個(gè)相同字面符的同時(shí)修改
5. Oj 1062 避免讀取無(wú)關(guān) '\n' 小技巧
scanf(" %c%c%c",&a,&b,&c);
可以搭配循環(huán)使用,原題如下
1062: ASCII碼排序 (----循環(huán) 字符)
題目描述
輸入三個(gè)字符后,按各字符的ASCII碼從小到大的順序輸出這三個(gè)字符。輸入
輸入數(shù)據(jù)有多組,每組占一行,有三個(gè)字符組成,之間無(wú)空格。輸出
對(duì)于每組輸入數(shù)據(jù),輸出一行,字符中間用一個(gè)空格分開。樣例輸入
qwe asd zxc樣例輸出
e q w a d s c x z
因?yàn)槊看蜗胍斎胂乱恍械臅r(shí)候,都會(huì)先輸入換行符,所以需要加一個(gè)空來(lái)吸收,代碼如下:
#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. 輸入若干值時(shí)的用法
想必你也注意到:
while(scanf(" %c%c%c",&a,&b,&c)!=EOF) ?
這是用于輸入若干值時(shí)的用法,與 它等價(jià)的還有:
while(~scanf(" %c%c%c",&a,&b,&c)) ?
7. while搭配 ' , ' 的用法( 感受一下 ' , ' 的靈活和魅力!)
while(scanf(" %d",&n)!=EOF,n!=-1) ?; ? ? ? ?//適用于末尾以 ' -1 ' 作為結(jié)尾的函數(shù)
8. const的用法(跟在哪個(gè)后面,哪個(gè)不變)
int const *pci; ? ? ? ?//指向整型常量的指針 int *const pci; ? ? ? ?//指向整型的常量指針
9. 最精簡(jiǎn)字符串賦值
while(*to++=*from++); ? ? ? ?//因?yàn)?'\0' 的ASCII碼為 0 !
10. 求數(shù)組元素個(gè)數(shù)
sizeof(array)/sizeof(array[0])
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)項(xiàng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06C++11實(shí)現(xiàn)簡(jiǎn)易定時(shí)器的示例代碼
這篇文章主要介紹了C++11實(shí)現(xiàn)簡(jiǎn)易定時(shí)器的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04C語(yǔ)言中邏輯運(yùn)算符與條件運(yùn)算符的學(xué)習(xí)教程
這篇文章主要介紹了C語(yǔ)言中邏輯運(yùn)算符與條件運(yùn)算符的學(xué)習(xí)教程,條件運(yùn)算符問(wèn)號(hào)即三目運(yùn)算符使用起來(lái)十分方便,需要的朋友可以參考下2016-04-04C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)之中序二叉樹實(shí)例詳解
這篇文章主要介紹了C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)之中序二叉樹實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01C++ Invalidaterect()函數(shù)作用案例詳解
這篇文章主要介紹了C++ Invalidaterect()函數(shù)作用案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08