getchar
int getchar( void );
返回值为int,所以需要用一个int变量来接收,不管输入几个字符,每次都只接收第一个字符,常与while和putchar配合使用。
从下面这张图可以看出,输入一个空格也会打印
当然,获取一个字符用得不多,每次都需要获取一串,所以我们可以配合while来使用。
用while来循环获取,不满足某一条件就退出。下面是三个例子:
- 一直获取,一直输出,直到用户手动结束
- 当输入的包含 . 就结束
- 输入换行结束
gets
char *gets( char *buffer );
从标准输入流中读取一行,并存储到缓冲区中。
当我们需要获取一个字符串时(特别是字符串中有空格的),就可以使用gets函数。
下面定义了一个大小为5的字符数组,我们输入了5个字符加回车,出现了这个情况。
对于上面的错误,我们说了gets函数是从标准输入流中读取一行,并存储到缓冲区中,而这一行是由除了第一个换行符(也就是回车)以外的所有字符组成,然后在返回这行之前将换行换成空字符(‘\0’)。
scanf
int scanf( const char *format [,argument]… );
可以看出函数的返回值是int,而参数可以是多个。
从下面这段代码和运行结果可以看出:
- 我们输入一个参数后,不管是输入空格还是换行,都不会将空格和换行符视为参数的值。
- 输入字符串时,只接收第一个空格以前的字符。
- 函数的返回值是成功接收的参数个数。
putchar
int putchar(int c);
参数和返回值都是int型,返回参数的ASCII码值
所以,putchar(48)和printf(“%c”,48)的效果一样,都是输出ASCII码值为48的字符(输出0)。
puts
int puts( const char *string );
函数的作用是:将字符串输出,用换行符(‘\n’)替换字符串的结束空字符(‘\0’)。
从下面这段代码和运行结果可以看出:
- 字符串当中有空格也能将空格后的字符输出。
- 字符串中有\0,那么它之后的字符就不输出。
- puts函数输出字符串之后,会在字符串结尾自动换行。
- 返回值是一个非负值。
printf
int printf( const char *format [, argument]… );
函数返回值是int,参数可以有多个。
函数的返回值是打印的字符数,类似 \t 和 \n这种都算一个字符。
- 输出的字符串中如果有 \0,那就只输出 \0之前的内容。
- printf函数不会自动换行,需要手动添加换行符 \n。
以上就是C语言常见的输入输出函数。
如有错误,还望指出。