1. 程式人生 > >linux C 列印錯誤資訊和標準輸入輸出

linux C 列印錯誤資訊和標準輸入輸出

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

.precicion_{b|B|l|L}_type

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;

這裡寫圖片描述