網(wǎng)站首頁 編程語言 正文
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搭配 ' , ' 的用法( 感受一下 ?' , ' 的靈活和魅力!)
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é)
原文鏈接:https://blog.csdn.net/qq_63761366/article/details/125576878
相關(guān)推薦
- 2022-09-03 Python標準庫sys庫常用功能詳解_python
- 2022-04-09 C#實現(xiàn)簡單的計算器功能_C#教程
- 2021-12-01 C語言system函數(shù)使用方法詳解_C 語言
- 2022-03-23 C++成員初始化列表_C 語言
- 2022-12-03 .Net?Core和RabbitMQ限制循環(huán)消費的方法_實用技巧
- 2022-04-01 k8s集群中移除節(jié)點后重新加入
- 2022-08-26 .net任務(wù)調(diào)度框架FluentScheduler簡介_實用技巧
- 2022-08-28 點在多邊形內(nèi)判定模板(射線法,凹凸多邊形均可)
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支