linux C 打印錯誤信息和標準輸入輸出詳細介紹
Linux 使用strerror 和 perror 函數(shù)來打印響應的錯誤信息 ,這兩個函數(shù)的標準調(diào)用格式說明如下:
#include<string.h> char *strerror(int errnum) #include<stdio.h> void perror(const char *msg)
strerror函數(shù)的返回值是一個指向消息字符串的指針,這個消息字符串即為出錯信息的字符串
perror函數(shù)沒有返回值,其輸出如下:
“由msg指針指向的字符串” + “:” + errno + “回車換行”
#include<stdio.h> #include<string.h> #include<errno.h> int main(int argc, char *argv[]) { printf("EACCES:%s\n", strerror(EACCES));//打印沒有權(quán)限錯誤信息 errno = EHOSTDOWN;//EHOSTDOWN 服務器關(guān)閉 perror(argv[0]); return 0; }
標準輸入輸出函數(shù)
標準輸出函數(shù)
printf函數(shù)用于將格式化數(shù)據(jù)輸出,其標準調(diào)用格式如下:
#include<stdin.h> printf(const char *format, …);
其參數(shù)是format是一個字符串,包含字符,字符序列,和格式說明,其中字符部分與字符序列按順序輸出,而格式說明以”%”開始,格式說明是跟隨的相同序號數(shù)據(jù)按格式說明轉(zhuǎn)換和輸出.
printf函數(shù)的格式說明結(jié)構(gòu)為:%flags_width.precicion_{b|B|l|L}_type
type:用來說明參數(shù)是字符串,字符,數(shù)字或者指針字符
printf函數(shù)的type參數(shù)
type | 輸出結(jié)果 |
---|---|
D | 有符號十進制數(shù) |
U | 無符號十進制數(shù) |
O | 無符號八進制數(shù) |
x | 無符號十六進制數(shù),使用小寫 |
X | 無符號十六進制數(shù),使用大寫 |
f | 格式為[-]ddd.ddd的浮點數(shù) |
e | 格式為[-]ddde+dd的浮點數(shù) |
E | 格式為[-]dddE+dd的浮點數(shù) |
g | 使用f或者e中比較合適形式的浮點數(shù) |
G | 使用f或者E中比較合適形式的浮點數(shù) |
c | 單字符常數(shù) |
s | 字符串常數(shù) |
p | 指針 |
n | 無輸出但在下一參數(shù)所指整數(shù)中寫入字符串 |
% | ”%”字符 |
b,B,l,L用于type之前,說明整型d,i,u,o,x,X的char或者long轉(zhuǎn)換
flags是標志
printf函數(shù)flags參數(shù)
flags | 作用 |
---|---|
- | 左對齊 |
+ | 有符號,數(shù)值總是以正負號開始 |
空格 | 數(shù)字總是以符號或者空格開始 |
* | 忽略 |
width是域?qū)?/p>
precision精度,對于不同類型的意義不同,可能引起結(jié)尾或者舍入
printf函數(shù)的precision精度
數(shù)據(jù)類型 | 說明 |
---|---|
d,u,o,x,X | 輸出數(shù)字的最小位,輸出數(shù)字超出也不截斷尾 ,如果超出在左邊,則填入0 |
f,e,E | 輸出數(shù)字的小數(shù)位,末位四舍五入 |
g,G | 輸出數(shù)字的有效位 |
c,p | 無影響 |
s | 輸出字符的最大字符數(shù),超出部分將不顯示 |
標準輸入函數(shù)
scanf函數(shù)用于用戶向程序輸入數(shù)據(jù),其調(diào)用格式如下:
#include<stdin.h> scanf(const char *format,...)
示例:
#include<stdio.h> int main(int argc,char *argv[]) { char str[30]; printf("輸入一個字符串\n"); scanf("%s", str);//輸入一個字符串 printf("str=%s\n",str);//打印字符串 int a = -128; printf("%d\n", a);//打印有符號整數(shù) printf("%u\n", a);//打印無符號整數(shù) int b = 10; printf("%x\n", b);//打印16進制數(shù),小寫 printf("%X\n", b);//打印16進制數(shù),大寫 float c = 1.221121; printf("%f\n", c);//打印浮點數(shù) printf("%-.3f\n", c);//打印有效位數(shù)為3,左對齊的浮點數(shù) return 0;
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!