C語言基礎(2)——基本輸入輸出


C語言中的輸入輸出操作是通過調用標準函數庫函數來實現的。使用這些標準輸入輸出函數時,將輸入輸出函數的頭文件stdio.h包含到源文件中,即在開始位置加上如下編譯命令:
#include<stdio.h>

1.字符輸入輸出函數

字符輸入和輸出函數分別爲getchar()和putchar()。

putchar函數

函數的功能是把函數參數ch輸出到屏幕當前光標位置。其中ch可以是字符型或整型變量或常量,也可以是轉義字符。例如:

#include<stdio.h>
int main()
{
    char a='s';
    int i=115;
    
    putchar(a);
    putchar('\n');
    
    putchar('s');
    putchar('\n');
    
    putchar(i);      /*字符s的ASCII碼爲115,輸出字符s*/
    putchar('\n');
    
    putchar(115);
    putchar('\n');
    
    return 0;
}

程序運行結果爲:

s
s
s
s

從上面程序也可以看出來,一個putchar函數只能輸出一個字符
注意:
函數參數若只是整型變量或者常量,要求其值範圍在0~255。如果參數的值大於255,例如:
putchar(353);
因爲353超過了字符數據的儲存範圍,編譯器會將353轉換爲353-256=97,則上述語句等價於:
putchar(97);

getchar函數

#include<stdio.h>
int main()
{
    char a,b,c;
    a=getchar();    /*接受用戶從鍵盤輸入的一個字符,賦值給變量a*/
    b=getchar();
    c=getchar();
    putchar(a);
    putchar(b);
    putchar(c);
    putchar('\n');
    return 0;
 }

程序運行輸入:
hml↙
輸出:
hml
從上述程序可以看出getchar()函數功能是從鍵盤輸入一個字符。該函數無參數,但括號不能省略。
對於上述程序,如果我按如下方式輸入,會出現什麼情況呢?
h m l↙
沒錯,我輸入時,在每個字符之間加了空格。然而程序輸出卻如下:
h m
爲什麼會出現上述情況?
當程序運行輸入h m l時,字符‘s’送到字符變量a中,空格‘ ’送到字符變量b中,字符‘m’就送到了字符變量c中。因此,執行三個putchar函數後輸出h m也是理所當然了。

2格式化輸入輸出函數

格式輸出函數printf

(1)如果原樣輸出字符,輸出格式可以表示爲:
printf(“需要原樣輸出的字符”);
例如:
printf("微信關注公衆號技術菌團");
(2)格式輸出函數printf的格式爲:
printf(“格式控制”,輸出值參數表);
其中,“格式控制”是使用雙引號括起來的字符串,也稱爲轉換控制字符 串。輸出值參數中可以有多個輸出值。
格式控制說明符:由“%d”和格式字符組成。
在這裏插入圖片描述
在這裏插入圖片描述

int i;
char c;
printf("%d,%c\n",i,c); /*'\n'是換行符*/

"%d,%c\n"爲格式控制部分。其中’,'是普通字符,按原樣輸出。
輸出值參數表中有兩個輸出參數,分別爲i和c。參數i對應%d,對照上述格式轉換說明符圖表,即帶符號十進制整數形式輸出,輸出參數c對應%c,即以字符形式輸出。
格式轉換說明符用於指定各輸出參數的輸出形式。輸出值參數表中的各參數數據類型應與格式轉換說明符相匹配。原則上,輸出值參數表的各個參數的個數和類型應與格式轉換說明符中指定的數據個數和類型應一致,且從左到右一一對應。
想對輸出格式進行微調整怎麼辦?
在printf()的格式轉換說明符中,在%d和格式字符之間的位置,可以根據需要插入修飾符。如下圖所示printf()函數格式轉換說明符中的修飾符:
printf()函數格式轉換說明符中的修飾符
表 2 printf()函數格式轉換說明符中的修飾符

下圖是輸出函數示例程序
表 3 輸出函數示例程序

格式輸入函數scanf

格式輸入函數scanf格式爲:
scanf(“格式控制”,參數地址表);
“格式控制”是使用雙引號括起來的字符串,也稱爲轉換控制字符串。
格式轉換說明符同樣是以“%d”和格式字符組成。如下表:
函數scanf()的格式轉換說明符
表 4 函數scanf()的格式轉換說明符

例如:

int i;
char c;
scanf("%d,%c",&i,&c);

參數地址表中有兩個地址,分別爲i的地址&i和c地址&c。用戶輸入的第一個數據以整型形式存放到地址爲&i的整型變量i中,用戶輸入的第二個數據以字符型存放到地址爲&c的字符變量c中。
scanf()函數格式轉換說明符中的修飾符
表 5 scanf()函數格式轉換說明符中的修飾符
函數scanf()沒有精度.n格式修飾符,即用函數scanf()輸入實型數據時不能規定精度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章