gets():遇到换行字符(/n,回车)认为输入结束,换行符之前(不包括换行符)的所有字符读入,在这些字符后添加一个空字符(/0)。它将读取换行符并将其丢弃。
这里若定义的数组比输入的数据的长度小,这些输入的数据会覆盖内存的别的地方。
为了避免这个问题,引入了fgets()函数,可以指定字符长度。(下篇文章有fgets内容)。
scanf()函数:用%s格式读取。
scanf()和gets()主要的差别在于它们如何决定字符串何时结束。scanf()更基于获取单词而不是获取字符串,而gets()函数,会读取所有的字符,直到遇到第一个换行符为止。
scanf()使用两种方法决定输入结束。无论哪种方法,字符串都是以遇到的第一个非空白字符开始。如果使用%s格式,字符串读到(但不包括)下一个空白字符格式(比如空格、制表符或换行符)。如果指定了字段宽度,比如%10s,scanf()就会读入10个字符或直接遇到第一个空白字符。