1、printf与scanf
特征 | 参数 | 返回值 | |
printf | 略 | 略 | 打印的字符数 |
scanf | 读取数字: ①跳过空白字符,读取符号字符或数字字符,直到费数字字符 将 ②将数字后读到的那个空白字符放回输入 ③未能读入指定的输入时,就留下这个字符,下次读取,而不会无视它 读取字符串: ①忽略开始的空白字符,读取一个字符串,直到遇到空字符 ②将字符串后读到那个空白字符放回输入 ③在读出的“字符串”后加上'\0'称为一个真正的字符串 读取字符: 所有字符一视同仁,空白字符也一样 | 略 | ①成功读入的项目的个数 ②没有读取任何项目则为0,检测到文件结尾则返回EOF |
2、单字符IO:putchar与getchar
很简单,与putc、getc很相像,只有参数的差别,前两者通过后两者定义。这是大多数文本处理程序的核心。
3、puts与gets
字符串IO
特征 | 参数 | 返回值 | |
puts | 自动添加换行符'\n' | 字符串地址 | 无 |
gets | ①读取字符串,直到'\n'。 ②读取换行符并丢弃 ③添加空字符'\0' | 接收字符数组名 | ①正常:字符串的地址,也即接收字符数组名 ②出错或遇到文件尾:返回空指针NULL |
然而gets函数有个缺陷:不检查目标数组是否能够容纳输入,很不安全,事实上,这正是蠕虫病毒的原理。对于重要的编程,应该使用fgets()而不是gets()。
特征 | 参数 | 返回值 | |
fputs | 不会自动添加换行符 | ①字符串 ②最大输出字符数 ③文件 | 无 |
fgets | ①读取字符串,读到n-1个字符或者换行符为止 ②读取并保存换行符,并不丢弃 ③添加空字符'\0' | ①接收数组 ②最大读入字符数n ③文件 | 同gets |
总结:
scanf与printf用于混合类型数据的读取、转换及输出,或者希望每次读取一个单词。
执行速度是比较慢的。
Gets从键盘读取文本更好,当然,在重要场合,应使用fgets。
这几对IO输入时互相搭配的。