C?語言輸入輸出庫函數(shù)講解(最新推薦)
輸入輸出函數(shù):能夠讓程序和用戶或者文件進行交互。
頭文件:#include<stdio.h>
1. printf 函數(shù):輸出格式化信息到控制臺 ??
?? 使用格式
printf("格式字符串", 參數(shù)列表);?? 作用
把格式化后的字符串輸出到控制臺。格式字符串里可以包含普通字符和格式說明符,格式說明符會被后面參數(shù)列表里的值替換。
?? 用法
格式說明符一般以 % 開頭,常見的有 %d(用于輸出整數(shù))、%f(用于輸出浮點數(shù))、%c(用于輸出字符)、%s(用于輸出字符串)等。
?? 注意事項
- 格式說明符要和參數(shù)的類型相匹配。
- 格式字符串中的普通字符會原樣輸出。
?? 適用類型
適用于各種基本數(shù)據(jù)類型以及字符串。
?? 示例
#include <stdio.h>
int main() {
int age = 20;
float height = 1.75;
char grade = 'A';
char name[] = "Alice";
// 輸出整數(shù)
printf("年齡是 %d 歲。\n", age);
// 輸出浮點數(shù)
printf("身高是 %.2f 米。\n", height);
// 輸出字符
printf("成績等級是 %c。\n", grade);
// 輸出字符串
printf("姓名是 %s。\n", name);
return 0;
}?? 解釋
在這個例子中,printf 函數(shù)依據(jù)格式說明符把變量的值輸出到控制臺。%.2f 表示輸出浮點數(shù)時保留兩位小數(shù)。
2. scanf 函數(shù):從控制臺讀取格式化輸入 ??
?? 使用格式
scanf("格式字符串", &變量1, &變量2, ...);?? 作用
從控制臺讀取用戶輸入的數(shù)據(jù),并且按照格式字符串的要求把數(shù)據(jù)存儲到對應(yīng)的變量中。
?? 用法
格式說明符和 printf 函數(shù)里的類似,不過要在變量名前加上取地址符 &,以此表明是要把數(shù)據(jù)存儲到該變量的地址處。
?? 注意事項
- 輸入的數(shù)據(jù)要和格式字符串匹配。
- 輸入多個數(shù)據(jù)時,一般用空格、制表符或者換行符分隔。
?? 適用類型
適用于各種基本數(shù)據(jù)類型。
?? 示例
#include <stdio.h>
int main() {
int num;
float score;
char ch;
// 提示用戶輸入整數(shù)
printf("請輸入一個整數(shù):");
scanf("%d", &num);
// 提示用戶輸入浮點數(shù)
printf("請輸入一個浮點數(shù):");
scanf("%f", &score);
// 提示用戶輸入字符
printf("請輸入一個字符:");
scanf(" %c", &ch); // 注意前面的空格,用于跳過之前輸入的換行符
// 輸出用戶輸入的內(nèi)容
printf("你輸入的整數(shù)是 %d,浮點數(shù)是 %.2f,字符是 %c。\n", num, score, ch);
return 0;
}?? 解釋
這個例子中,scanf 函數(shù)按照格式說明符讀取用戶輸入的數(shù)據(jù),并把它們存儲到對應(yīng)的變量中。在讀取字符前加空格是為了跳過之前輸入的換行符。
3. getchar 函數(shù):讀取單個字符 ??
?? 使用格式
int getchar(void);
?? 作用
從標準輸入(通常是鍵盤)讀取一個字符,并返回該字符的 ASCII 碼值。
?? 用法
調(diào)用 getchar 函數(shù)時,程序會暫停,等待用戶輸入一個字符,按下回車鍵后,函數(shù)會返回該字符的 ASCII 碼值。
?? 注意事項
getchar會讀取換行符,所以在連續(xù)使用時要注意處理換行符。- 函數(shù)返回值是
int類型,不是char類型。
?? 適用類型
適用于字符類型。
?? 示例
#include <stdio.h>
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
ch = getchar();
// 輸出用戶輸入的字符
printf("你輸入的字符是 %c。\n", ch);
return 0;
}?? 解釋
此例中,getchar 函數(shù)讀取用戶輸入的一個字符,并將其賦值給變量 ch,然后輸出該字符。
4. putchar 函數(shù):輸出單個字符 ???
?? 使用格式
int putchar(int c);
?? 作用
把一個字符輸出到標準輸出(通常是控制臺)。
?? 用法
傳入一個字符的 ASCII 碼值或者字符常量,函數(shù)會將對應(yīng)的字符輸出到控制臺。
?? 注意事項
- 傳入的參數(shù)可以是字符常量,也可以是字符變量的 ASCII 碼值。
- 函數(shù)返回值是輸出的字符的 ASCII 碼值。
?? 適用類型
適用于字符類型。
?? 示例
#include <stdio.h>
int main() {
char ch = 'B';
// 輸出字符
putchar(ch);
putchar('\n'); // 輸出換行符
return 0;
}?? 解釋
在這個例子中,putchar 函數(shù)把字符 B 輸出到控制臺,然后輸出一個換行符。
5. fopen 函數(shù):打開文件 ??
?? 使用格式
FILE *fopen(const char *filename, const char *mode);
?? 作用
打開指定文件名的文件,并返回一個指向該文件的 FILE 指針。
?? 用法
filename 是要打開的文件的名稱,mode 是打開文件的模式,常見的模式有:
"r":以只讀模式打開文件。"w":以寫入模式打開文件,如果文件不存在則創(chuàng)建,如果存在則清空內(nèi)容。"a":以追加模式打開文件,如果文件不存在則創(chuàng)建。
?? 注意事項
- 打開文件后,要檢查返回的指針是否為
NULL,若為NULL則表示打開文件失敗。 - 操作完文件后,要使用
fclose函數(shù)關(guān)閉文件。
?? 適用類型
適用于文件操作。
?? 示例
#include <stdio.h>
int main() {
FILE *file;
// 以只讀模式打開文件
file = fopen("test.txt", "r");
if (file == NULL) {
// 輸出錯誤信息
printf("無法打開文件!\n");
return 1;
}
// 這里可以進行文件讀取操作
// 關(guān)閉文件
fclose(file);
return 0;
}?? 解釋
此例中,fopen 函數(shù)嘗試以只讀模式打開 test.txt 文件,若打開失敗則輸出錯誤信息,打開成功后可以進行文件讀取操作,最后使用 fclose 函數(shù)關(guān)閉文件。
6. fclose 函數(shù):關(guān)閉文件 ?
?? 使用格式
int fclose(FILE *stream);
?? 作用
關(guān)閉指定的文件流,釋放相關(guān)資源。
?? 用法
傳入一個指向 FILE 類型的指針,該指針是通過 fopen 函數(shù)返回的。
?? 注意事項
- 關(guān)閉文件后,就不能再對該文件進行讀寫操作了。
- 函數(shù)返回值為 0 表示關(guān)閉成功,非 0 表示關(guān)閉失敗。
?? 適用類型
適用于文件操作。
?? 示例
#include <stdio.h>
int main() {
FILE *file;
// 以寫入模式打開文件
file = fopen("test.txt", "w");
if (file == NULL) {
// 輸出錯誤信息
printf("無法打開文件!\n");
return 1;
}
// 這里可以進行文件寫入操作
// 關(guān)閉文件
if (fclose(file) == 0) {
printf("文件關(guān)閉成功!\n");
} else {
printf("文件關(guān)閉失敗!\n");
}
return 0;
}?? 解釋
這個例子中,fopen 函數(shù)以寫入模式打開 test.txt 文件,進行文件寫入操作后,使用 fclose 函數(shù)關(guān)閉文件,并根據(jù)返回值判斷關(guān)閉是否成功。
7. fgets 函數(shù):安全讀取字符串 ??
?? 使用格式
char *fgets(char *str, int n, FILE *stream);
?? 作用
從指定的文件流中讀取一行字符串,并存儲到 str 指向的字符數(shù)組中。
?? 用法
str 是存儲讀取字符串的字符數(shù)組,n 是最多讀取的字符數(shù)(包含換行符和字符串結(jié)束符 '\0'),stream 是文件流指針,可以是 stdin(標準輸入)或者通過 fopen 打開的文件指針。
?? 注意事項
- 若讀取的字符數(shù)達到
n - 1或者遇到換行符,讀取會停止,并且會在字符串末尾添加'\0'。 - 若讀取成功,返回
str指針;若遇到文件結(jié)束符或者出錯,返回NULL。
?? 適用類型
適用于字符串類型。
?? 示例
#include <stdio.h>
int main() {
char buffer[100];
// 從標準輸入讀取一行字符串
printf("請輸入一行字符串:");
fgets(buffer, sizeof(buffer), stdin);
// 輸出讀取的字符串
printf("你輸入的字符串是:%s", buffer);
return 0;
}?? 解釋
在這個例子中,fgets 函數(shù)從標準輸入讀取一行字符串,最多讀取 sizeof(buffer) - 1 個字符,然后將其存儲到 buffer 數(shù)組中,并輸出該字符串。
8. fputs 函數(shù):輸出字符串到文件 ??
?? 使用格式
int fputs(const char *str, FILE *stream);
?? 作用
把字符串 str 輸出到指定的文件流中。
?? 用法
str 是要輸出的字符串,stream 是文件流指針,可以是 stdout(標準輸出)或者通過 fopen 打開的文件指針。
?? 注意事項
- 函數(shù)不會自動添加換行符,若需要換行,要在字符串中手動添加
'\n'。 - 若輸出成功,返回非負值;若出錯,返回
EOF。
?? 適用類型
適用于字符串類型。
?? 示例
#include <stdio.h>
int main() {
FILE *file;
// 以寫入模式打開文件
file = fopen("test.txt", "w");
if (file == NULL) {
// 輸出錯誤信息
printf("無法打開文件!\n");
return 1;
}
// 向文件中寫入字符串
fputs("Hello, World!\n", file);
// 關(guān)閉文件
fclose(file);
return 0;
}?? 解釋
此例中,fopen 函數(shù)以寫入模式打開 test.txt 文件,fputs 函數(shù)把字符串 "Hello, World!\n" 寫入文件,最后使用 fclose 函數(shù)關(guān)閉文件。
緩沖區(qū)管理技巧
通用清空方案:
void clear_buffer() {
int c;
while ((c = getchar()) != '\n' && c != EOF);
}使用場景:
在scanf()后立即調(diào)用
處理異常輸入時
?? 黃金法則:
- 所有輸入函數(shù)都要考慮緩沖區(qū)溢出風險
- 文件操作后必須檢查返回值并關(guān)閉文件
- 格式化IO要嚴格匹配類型
掌握這些核心函數(shù),你的C語言IO操作將游刃有余! ??
到此這篇關(guān)于C 語言輸入輸出庫函數(shù)講解的文章就介紹到這了,更多相關(guān)C 語言輸入輸出庫函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C數(shù)據(jù)結(jié)構(gòu)中串簡單實例
這篇文章主要介紹了C數(shù)據(jù)結(jié)構(gòu)中串簡單實例的相關(guān)資料,需要的朋友可以參考下2017-06-06
C++ 中malloc()和free()函數(shù)的理解
這篇文章主要介紹了C++ 中malloc()和free()函數(shù)的理解的相關(guān)資料,這里提供用法示例幫助大家理解這部分知識,需要的朋友可以參考下2017-08-08
kernel劫持modprobe?path內(nèi)容詳解
這篇文章主要為大家介紹了kernel劫持modprobe?path的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
c++中臨時變量不能作為非const的引用參數(shù)的方法
下面小編就為大家?guī)硪黄猚++中臨時變量不能作為非const的引用參數(shù)的方法。小編覺得挺不錯的現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
基于OpenCV實現(xiàn)車道線檢測(自動駕駛 機器視覺)
無人駕駛技術(shù)是機器學習為主的一門前沿領(lǐng)域,在無人駕駛領(lǐng)域中機器學習的各種算法隨處可見,本文將為大家介紹無人駕駛技術(shù)中的車道線檢測,感興趣的小伙伴可以了解一下2021-11-11

