功能
从流获取字符串。
语法
char *fgets(
char *str,
int numChars,
FILE *stream
);
wchar_t *fgetws(
wchar_t *str,
int numChars,
FILE *stream
);
参数
str
数据的存储位置。
numChars
要读取的最大字符数。
stream
指向文件结构的指针。
返回值
每个函数将返回str。 返回值与对应意思如下:
NULL:指示错误或文件结尾条件。 使用feof或ferror以确定是否发生了错误。 如果str或stream是 null 指针,或numChars小于或等于零,此函数调用无效参数处理程序,如中所述参数验证。 如果允许执行继续,则errno设置为EINVAL并且该函数返回NULL。
有关这些代码以及其他错误代码的详细信息,请参阅 _doserrno、errno、_sys_errlist 和 _sys_nerr。
备注
Fgets函数从输入读取的字符串流自变量并将其存储在str。 fgets读取字符从当前流位置到并包括第一个换行符,到流的结尾或直到读取的字符数等于numChars -1,具体取决于第一个。 结果存储在str追加 null 字符。 换行符(如果读取)将包括在字符串中。
fgetws是宽字符版本fgets。
fgetws读取的宽字符自变量str作为多字节字符字符串或宽字符字符串根据流在文本模式还是二进制模式中打开分别。 有关在 Unicode 和多字节流 I/O 中使用文本和二进制模式的详细信息,请参阅文本和二进制模式文件 I/O 和文本和二进制模式下的 Unicode 流 I/O。
一般文本例程映射
TCHAR.H 例程 | 未定义 _UNICODE 和 _MBCS | 已定义 _MBCS | 已定义 _UNICODE |
---|---|---|---|
_fgetts | fgets | fgets | fgetws |
头文件要求
函数 | 必需的标头 |
---|---|
fgets | <stdio.h> |
fgetws | <stdio.h> 或 <wchar.h> |
有关其他兼容性信息,请参阅 兼容性。
示例
// crt_fgets.c
// This program uses fgets to display
// the first line from a file.
#include <stdio.h>
int main( void )
{
FILE *stream;
char line[100];
if( fopen_s( &stream, "crt_fgets.txt", "r" ) == 0 )
{
if( fgets( line, 100, stream ) == NULL)
printf( "fgets error\numChars" );
else
printf( "%s", line);
fclose( stream );
}
}
输入:crt_fgets.txt
Line one.
Line two.
输出
Line one.
备注
可用如下代码快捷获取键盘输入流,并将其存为char *类型。stdin是宏指令,代表输入流指针。
char buffer[80];
fgets( buffer, sizeof buffer, stdin);