std::fgets

来自cppreference.com
< cpp‎ | io‎ | c
定义于头文件 <cstdio>
char* fgets( char* str, int count, std::FILE* stream );

从给定文件流读取至多 count - 1 个字符,并存储它们于 str 所指向的字符数组。若出现文件尾条件或找到换行符则读取停止,后一情况下 str 将保有换行符。若不出现错误,则立即在写入 str 的最后字符之后写入空字符的

目录

[编辑] 参数

str - 指向 char 数组元素的指针
count - 要写入的最大字符数(典型地为 str 的长度)
stream - 读取数据来源的文件流

[编辑] 返回值

成功时为 str ,失败时为空指针。

若文件尾条件导致了失败,则另外设置 stream 上的文件尾指示器(见 std::feof() )。此情况下不改变 str 所指向的数组内容。

若其他错误条件导致了失败,则设置 stream上的错误指示器(见 std::ferror() )。 str 所指向的数组内容是不确定的(甚至可以不是空终止的)。

[编辑] 示例

#include <iostream>
#include <cstdio>
#include <cstdlib>
 
int main()
{
    std::FILE* tmpf = std::tmpfile();
    std::fputs("Alan Turing\n", tmpf);
    std::fputs("John von Neumann\n", tmpf);
    std::fputs("Alonzo Church\n", tmpf);
 
    std::rewind(tmpf);
    char buf[8];
    while (std::fgets(buf, sizeof buf, tmpf) != NULL) {
        std::cout << '"' << buf << '"' << '\n';
    }
}

输出:

"Alan Tu"
"ring
"
"John vo"
"n Neuma"
"nn
"
"Alonzo "
"Church
"

[编辑] 参阅

stdin 、文件流或缓冲区读取有格式输入
(函数) [编辑]
(C++14 前)
stdin 读取字符串
(函数) [编辑]
写字符串到文件流
(函数) [编辑]
fgetsC 文档