網站首頁 編程語言 正文
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])
總結
原文鏈接:https://blog.csdn.net/qq_63761366/article/details/125576878
相關推薦
- 2023-01-20 基于?Dubbo?Admin?動態調整服務超時時間的操作步驟_其它綜合
- 2022-10-10 AOSP源碼下載示例代碼_Android
- 2022-04-01 使用Git clone代碼失敗的解決方法
- 2022-09-08 pytorch關于Tensor的數據類型說明_python
- 2022-12-07 C語言內存分布與heap空間分別詳細講解_C 語言
- 2023-01-13 C#實現顯示CPU使用率與內存使用率_C#教程
- 2022-03-18 C語言字符串函數操作(strlen,strcpy,strcat,strcmp)詳解_C 語言
- 2022-09-09 PyTorch策略梯度算法詳情_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支