gets()函数读取整行输入,直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符的末尾添加一个空字符使其成为一个C字符串。它经常和puts()函数配对使用,该函数用于显示字符串,并在末尾添加换行符。
示例
//Visual Studio中加上这句才可以使用scanf()
//否则只能使用scanf_s()
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>
#define STLEN 81
//argc: 参数个数 argv[]: 参数数组
int main(int argc, char *argv[])
{
char words[STLEN];
puts("Enter a string, please.");
/*如果输入的字符串超过分配给words的存储空间,
会导致缓冲区溢出(buffer overflow),即多余的字符超出了指定
的目标空间。如果这些多余的字符只是占用了尚未使用的内存,
就不会立即出现问题;如果它们擦写掉程序中的其他数据,会导致
程序异常中止;或者还有其他情况。
因为gets()函数的不安全性,在C11标准中废除了gets(),但很多编译
器为了兼容以前的程序依然提供支持。
*/
gets(words); //典型用法
printf("Your string twice:\n");
printf("%s\n", words);
puts(words);
puts("Done.");
system("pause");
return 0;
}