fgets和scanf的区别

C语言中常用的两个输入方法。平时没有特别在意,最近在项目中碰到问题,才开始思考。下面简单记录一下自己碰到的问题。

#define _CRT_SECURE_NO_DEPRECATE

#include "stdio.h"
#include "string.h"



int Main()
{
	char name[10] = { 0 };
	//scanf("%s", name);
	//输入  gu chuan hang  只能得到  gu	 
	//PS. scanf 结束符为 空格 换行符 
	//输入 guchuanhang12354 可以得到 guchuanhang1254(Abort)
	//PS. scanf 不做空间检测

	fgets(name, sizeof(name), stdin);
	//输入  gu chuan hang  得到  gu	chuan 
	//PS. scanf 结束符为 换行符 ,并且做越界检查,越界后自动截断.
	//输入 gu  得到 gu\n
	//PS. fgets 不仅仅将回车换行作为分隔符,还将其读入内容中
	printf("%s", name);

	return 0;
}

你可能感兴趣的:(C++基础,c语言)