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