【C/C++】使用getchar()实现gets()功能
#include <stdio.h>
int getchar(void);
从标准输入流中(控制台或命令行终端)获取一个输入的字符。
char *gets(char *s);
从标准输入流中(控制台或命令行终端)获取一串输入的字符直至换行符 \n
,但返回内容不包括\n
。
由于_gets()_中参数char*s
为提前执行了_malloc_分配了固定空间的字符串,所以在合法的情况下可接受的字符数量是有限的。但在_gets()_函数执行中,是以换行符 \n
的出现为终止的,所以可能导致对参数char*s
操作出现越界的情况(同野指针的情形),严重会导致程序崩溃。
这里,使用getchar()封装了一个新的函数_get_string(const int max)_来替代_gets()_,实现如下:
1 |
|
运行结果如下图:
图中上部分为正常获取输入内容;
图中下部分为输入超出max值时会截断超出内容只保留max限度内的字符。