linux C 列印錯誤資訊和標準輸入輸出
阿新 • • 發佈:2019-02-08
Linux 使用strerror 和 perror 函式來列印響應的錯誤資訊 ,這兩個函式的標準呼叫格式說明如下:
#include<string.h>
char *strerror(int errnum)
#include<stdio.h>
void perror(const char *msg)
strerror函式的返回值是一個指向訊息字串的指標,這個訊息字串即為出錯資訊的字串
perror函式沒有返回值,其輸出如下:
“由msg指標指向的字串” + “:” + errno + “回車換行”
#include<stdio.h>
#include<string.h>
#include<errno.h>
int main(int argc, char *argv[])
{
printf("EACCES:%s\n", strerror(EACCES));//列印沒有許可權錯誤資訊
errno = EHOSTDOWN;//EHOSTDOWN 伺服器關閉
perror(argv[0]);
return 0;
}
標準輸入輸出函式
標準輸出函式
printf函式用於將格式化資料輸出,其標準呼叫格式如下:
#include<stdin.h>
printf(const char *format, …);
其引數是format是一個字串,包含字元,字元序列,和格式說明,其中字元部分與字元序列按順序輸出,而格式說明以”%”開始,格式說明是跟隨的相同序號資料按格式說明轉換和輸出.
printf函式的格式說明結構為:%flags_width
type:用來說明引數是字串,字元,數字或者指標字元
printf函式的type引數
type | 輸出結果 |
---|---|
D | 有符號十進位制數 |
U | 無符號十進位制數 |
O | 無符號八進位制數 |
x | 無符號十六進位制數,使用小寫 |
X | 無符號十六進位制數,使用大寫 |
f | 格式為[-]ddd.ddd的浮點數 |
e | 格式為[-]ddde+dd的浮點數 |
E | 格式為[-]dddE+dd的浮點數 |
g | 使用f或者e中比較合適形式的浮點數 |
G | 使用f或者E中比較合適形式的浮點數 |
c | 單字元常數 |
s | 字串常數 |
p | 指標 |
n | 無輸出但在下一引數所指整數中寫入字串 |
% | ”%”字元 |
b,B,l,L用於type之前,說明整型d,i,u,o,x,X的char或者long轉換
flags是標誌
printf函式flags引數
flags | 作用 |
---|---|
- | 左對齊 |
+ | 有符號,數值總是以正負號開始 |
空格 | 數字總是以符號或者空格開始 |
* | 忽略 |
width是域寬
precision精度,對於不同型別的意義不同,可能引起結尾或者舍入
printf函式的precision精度
資料型別 | 說明 |
---|---|
d,u,o,x,X | 輸出數字的最小位,輸出數字超出也不截斷尾 ,如果超出在左邊,則填入0 |
f,e,E | 輸出數字的小數位,末位四捨五入 |
g,G | 輸出數字的有效位 |
c,p | 無影響 |
s | 輸出字元的最大字元數,超出部分將不顯示 |
標準輸入函式
scanf函式用於使用者向程式輸入資料,其呼叫格式如下:
#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);//列印有符號整數
printf("%u\n", a);//列印無符號整數
int b = 10;
printf("%x\n", b);//列印16進位制數,小寫
printf("%X\n", b);//列印16進位制數,大寫
float c = 1.221121;
printf("%f\n", c);//列印浮點數
printf("%-.3f\n", c);//列印有效位數為3,左對齊的浮點數
return 0;