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