一、fgets函數返回值
fgets()函數返回讀取到的字元串,包括換行符。如果成功讀取,則返回字元串的指針,如果未能讀取到內容,則返回NULL指針。如果讀取的字元串長度超過指定的緩衝區長度,則fgets()函數會將字元串截斷,但是依然返回截斷後的字元串。
char buffer[5]; fgets(buffer, 5, stdin); //如果輸入「hello world」,則輸出「hello」
上述代碼截取了輸入的字元串,只輸出了5個字元長度的內容。此時fgets()函數會自動截斷輸入,只返回「hello」。
二、fgets會讀取換行符嗎
默認情況下,fgets()函數讀取到換行符(\n)會停止讀取,但是也會將換行符包含在讀取的字元串中。如果未讀取到換行符,fgets()函數會一直等待輸入。
char buffer[1024]; fgets(buffer, 1024, stdin); //等待輸入
上述代碼會在等待用戶回車之前一直阻塞,直到用戶輸入了回車鍵,才會繼續向下執行。
三、fgets()的功能
fgets()函數是標準C語言庫中的一個輸入函數,它可以從指定的輸入流中讀取一行字元串。常用於讀取用戶從鍵盤輸入的內容,也可以從文件中讀取。函數原型如下:
char *fgets(char *str, int n, FILE *stream);
其中,str代表字元串存儲的首地址,n代表讀取的最大字元數(包括換行符),stream代表輸入流的文件指針,例如stdin代表鍵盤輸入流,stdout代表屏幕輸出流,而文件操作函數fopen()返回的文件指針就可以作為這裡的stream參數。
四、fgets的用法
fgets()函數的用法主要有兩種:
1、從文件中讀取
FILE *fp = fopen("example.txt", "r"); //以只讀方式打開example.txt文件 char buffer[1024]; while(fgets(buffer, 1024, fp)) { printf("%s", buffer); //輸出讀取到的字元串 } fclose(fp); //關閉文件
上述代碼打開了一個名為example.txt的文件,按行讀取其中的內容,並輸出在屏幕上。
2、從鍵盤輸入讀取
#include <stdio.h> int main() { char buffer[1024]; printf("請輸入你的姓名:"); fgets(buffer, 1024, stdin); printf("你好,%s", buffer); return 0; }
上述代碼等待用戶從鍵盤輸入,並將輸入的內容賦值給變數buffer,然後輸出一個問候語。
五、fgets函數詳細用法
除了上述兩種常見用法,fgets()函數還有許多其他的用法:
1、fgets讀取多行字元串
#include <stdio.h> int main() { char buffer[1024]; printf("請輸入若干行文字,以回車結束:\n"); while(fgets(buffer, 1024, stdin)) { printf("%s", buffer); } return 0; }
上述代碼可以讀取用戶的多行輸入,並一行一行地輸出在屏幕上,直到用戶輸入Ctrl + D(在Linux和Mac上)或者Ctrl + Z(在Windows上)結束程序。
2、fgets結合sscanf實現字元串解析
#include <stdio.h> int main() { char buffer[1024] = "Doe, John, 123 Main St., Anytown, USA"; char name[20], street[30], town[20], country[20]; int house_number; sscanf(buffer, "%[^,], %[^,], %d %[^,], %[^\n]", name, street, &house_number, town, country); printf("姓名:%s\n", name); printf("街道:%s,%d號\n", street, house_number); printf("城鎮:%s\n", town); printf("國家:%s\n", country); return 0; }
上述代碼從一個字元串中解析出了姓名、街道、城鎮和國家等信息,並輸出在屏幕上。其中,%[^,]表示讀取除逗號以外的所有字元,%d表示讀取一個整數,%[^\n]表示讀取一行字元串。
六、fgets函數怎麼用
使用fgets()函數需要注意以下幾點:
1、為緩衝區分配足夠的空間,以確保讀取到完整的內容。
2、確保程序能控制讀取的字元數,以防止攻擊者注入惡意字元串。
3、從文件中讀取時,必須先判斷文件是否存在、可讀、是否已打開,並在讀取結束後關閉文件。
4、從鍵盤中讀取時,可以使用scanf()函數或getchar()函數替代fgets()函數,具體使用哪種函數可以根據應用場景進行選擇。
七、fgets函數選取3~5個與fgets()相關的做為小標題
1、fgets函數返回值
2、fgets會讀取換行符嗎
3、fgets()的功能
4、fgets的用法
5、fgets函數詳細用法
上述小標題涵蓋了fgets()函數的全部用法,而且每個小標題長度也基本控制在10漢字左右,方便讀者快速閱讀和理解。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/187974.html