鸟语天空
C语言—gets()
post by:追风剑情 2019-10-18 20:14

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;
}

运行测试 
11111.png

评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容