C語言從stdin讀取一行字串的幾種方法

2021-06-27 08:17:58 字數 2135 閱讀 6634

c語言從

stdin讀取一行字串的幾種方法

gets

gets函式的標頭檔案是

,原型如下:

char *gets(char *s);

gets從

stdin中讀入一行內容到

s指定的

buffer中,當遇到換行符或

eof時讀取結束。讀取成功時,返回

s位址;失敗時返回

null。需要注意的是,

gets會將行末尾的

'\n'字元或

eof替換成

'\0',這樣,

gets讀取的內容中不包括

'\n'字元。如果要獲取讀取字串的長度,可以呼叫

strlen函式獲得。

#include #include #include int main()

// free buff

free(buff);

}

fgets

fgets函式的標頭檔案是

,原型如下:

char *fgets(char *s, int size, file*stream);

fgets從

stream中讀取最多

size-1大小的內容到

s指定的

buffer中,當遇到換行符或

eof時讀取結束。讀取成功時,返回

s位址;失敗時返回

null。需要注意的是,

fgets會在所讀取的內容後面新增

'\0',這樣,

fgets讀取的內容中會包括行末尾的

'\n'字元。如果要獲取讀取字串的長度,可以呼叫

strlen函式獲得。

#include #include #include int main()

// free buff

free(buff);

}

getline

getline函式的標頭檔案是

,原型如下:

ssize_t getline(char **lineptr,size_t *n, file *stream);

getline從

stream中讀取一行內容到

*lineptr所指定的

buffer中,當遇到換行符或

eof時讀取結束。*

n是*lineptr所指定的

buffer的大小,如果*

n小於讀入的內容長度,

getline會自動擴充套件

buffer長度,並更新

*lineptr和

*n的值。讀取成功時,返回讀入的字元個數;失敗時返回

-1。需要注意的是,

gelines讀取的內容中會包括行末尾的

'\n'字元。

#include #include int

main(void)

free(line);

exit(exit_success);

}

自己實現

my_getline 可以自己實現,原型如下:

int my_getline(char* line, intmax_size);

my_getline從

stdin中讀取最多

max_size-1個字元到

line所指定的

buff中,當遇到換行符或

eof時讀取結束。讀取成功時,返回讀取的字串長度;失敗時返回

0。my_getline讀取的內容中會包括行末尾的

'\n'字元。

#include #include int my_getline(char* line, int max_size)

line[len] = '\0';

return len;

}int main()

free(buff);

}

參考:

[1] linux programmer's manual.

[2] brian w. kernighan and dennis m.ritchie. the c programming language, second edition.

C語言 從stdin讀取一行字串的多種方法

1.gets gets 函式的標頭檔案是 原型如下 char gets char s gets 從stdin 中讀入一行內容到 s指定的 buffer 中,當遇到換行符或 eof時讀取結束。讀取成功時,返回 s位址 失敗時返回 null 需要注意的是,gets 會將行末尾的 n 字元或eof 替換成...

C語言一行一行讀取檔案

c語言中,使用fgets函式可以一行行讀du取檔案。1 fgets函式 原型 char fgets char buf,int bufsize,file stream 功能 從檔案結構體指標stream中讀取資料,每次讀取一行。說明 讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize ...

C語言 一行一行讀取檔案txt

參考 怎麼用c語言實現讀取乙個txt檔案裡的資料 要按行讀出來 開啟檔案 fopen 需要開啟的路徑 然後使用fgets函式讀取行 include include include define max line 1024 intmain while fgets buf,max line,fp nul...