stdio.h 幾乎可以說是每一個 C 語言源代碼中都要引用的一個文件,其中定義了許多常用的函數,如輸入輸出函數、文件相關的函數等。
下面介紹 stdio.h 中定義的基本輸入輸出函數。
1. 格式化輸入輸出第一個出場的是用得最多的一對輸入輸出函數。
咱就來看一下這兩個函數在 stdio.h 文件中是如何定義的?
// 輸入函數
int scanf(const char* __format, ...);
// 輸出函數
int printf(const char* __format, ...);
這兩個函數定義的參數都有兩個,第一個是字符指針常量,其實也就是字符串,是兩個函數都必須要具備的參數。
後面的三個點,名為可變參數。不限制參數個數(0個及以上)、參數類型。
#include<stdio.h>
int main()
{
int a;
scanf("%d", &a);
return 0;
}
在 scanf 函數的字符串裡,可以是格式字符、普通字符、空白字符,而轉義字符在其中會失去它的轉義功能,成為一個普通字符。
當字符串中每有一個格式符号,相應後面的可變參數列表中就要有一個變量,一一對應。如果不附上變量,就會産生報錯。
變量如果是基本數據類型的,如整型、浮點型、字符型的,則要在變量前面加上一個尋址運算符(&),才能将數據傳遞給相應的變量。
同時需要注意的是,scanf 函數的可變參數列表隻能傳入變量,而不是能是常量、表達式等。
#include<stdio.h>
int main()
{
int a=3;
printf("輸出數字:%d\n", a);
return 0;
}
printf 函數中,字符串中可以是任意字符,另外轉義符号(如 \n、\t 等)不會被轉換為普通字符。
和 scanf 函數不同的是,該函數的可變參數列表沒有強制要求有多少個格式符号,就要填寫變量,編譯是不會發生錯誤,也會正常運行。
不過不建議這麼做,因為沒有意義,其次運行後編譯器會随機安排一個垃圾值,獲得預期外的結果。
且 printf 函數的可變參數列既可以是變量,也可以是常數、表達式。
2. 單字符輸入輸出第二組輸入輸出函數,getchar 和 putchar。
// getchar
int getchar(void);
// putchat
int putchar(int char);
getchar 函數是沒有參數的。每一次隻能接受一個字符,即是輸入一連串的字符,也隻會接收第一個字符,而且字符必須還是 ASCII 碼表上的字符。如果輸入的是一個漢字,那麼是不會被接收的。
putchar 函數是有參數的,傳入的參數隻能是整數類型或者字符類型。其中整數隻有在 0-255 之間才能輸出字符,其他的是無法在屏幕上顯示結果。
#include<stdio.h>
int main()
{
char c = getchar();
putchar(c);
return 0;
}
輸入輸出:
3. 字符串輸入輸出
顧名思義,這一組函數用于字符串的輸入和輸出。
// gets
char* gets(char *);
// puts
int puts(const char *);
gets 函數有一個參數,可以是字符指針變量或者字符數組變量。
puts 函數也有一個參數,可以是字符指針變量、字符數組,也可以是字符指針常量。
當傳給 gets 函數是一個字符指針的時候,需要對其進行初始化。
#include<stdio.h>
int main()
{
char str[10]="\0";
char *string = str;
gets(string);
puts(string);
return 0;
}
輸入輸出:
但需要注意的是,輸入的字符不能大于定義的數組長度,否則就會造成内存溢出,産生異常。
4. 附錄
格式字符:
轉義字符:
總結
關于 C 語言常用的輸入輸出函數就介紹到這結束了。如果本篇文章對您有所幫助,點個贊支持一下。
如有發現文中有錯誤或者不恰當的地方,歡迎在評論區留言讨論。
,