gets_s函数
概要:
#define __STDC_WANT_LIB_EXT1__ 1 #include <stdio.h> char *gets_s(char *s, rsize_t n);
描述:
该函数从标准输入流中读取最多(n-1)个字符到参数s指向的数组,直至文件末尾或者遇到换行符。换行符会被丢弃,丢弃的换行符不计算在读取的字符数中,并在读取最后一个字符后自动向数组中添加空字符。
如果到文件末尾并且没有字符被读入数组,或者如果发生读取错误,函数将s[0]设置为空字符,并且数组s中其它元素的值是不确定的。
与gets函数不同,如果输入行溢出存储缓冲,gets_s函数将其作为运行约束冲突。与fgets函数不同,gets_s函数在输入行和成功调用的gets_s函数之间保持一一对应的关系。使用gets的程序期望这种关系。
运行约束:
参数s不是空指针。参数n既不等于0,也不大于宏RSIZE_MAX。从标准输入流中读取n-1个字符时应出现换行符、文件末尾或者读取错误。
如果存在运行约束冲突,函数从标准输入流中读取并丢弃字符,直至读取到换行符、文件末尾或者发生读取错误,并且如果参数s不是空指针,将s[0]设置为空字符。
参数:
char *s
char类型指针,读取的字符将存储在其指向的数组中。
rsize_t n
指定读取字符的最大数量,读取字符的最大数量为(n-1)。
返回值:
如果调用成功,函数返回s;如果存在运行约束冲突,或者如果到达文件末尾并且没有读取任何字符到数组中,或者如果在操作过程中发生读取错误,函数返回空指针。
范例:
|
|
结果:
假设输入内容为:
If you do not learn to think when you are young, you may never learn. -Edison
将输出:
If you do not learn to think when you are young, you may never learn. -Edison
注:使用Visual Studio编译。
相关内容:
fgets | 从输入流读取字符串的函数。 |
gets | 从标准输入流中读取字符串的函数。 |