标准文件
C 语言把所有的设备都当作文件。所以设备(比如显示器)被处理的方式与文件相同。以下三个文件会在程序执行时自动打开,以便访问键盘和屏幕。
标准文件 | 文件指针 | 设备 |
---|---|---|
标准输入 | stdin | 键盘 |
标准输出 | stdout | 屏幕 |
标准错误 | stderr | 屏幕 |
scanf() 和 printf() 函数
int scanf(const char *format, ...)
函数从标准输入流stdin
读取输入,并根据提供的 format 来浏览输入。int printf(const char *format, ...)
函数把输出写入到标准输出流stdout
,并根据提供的格式产生输出。
format
可以是一个简单的常量字符串,但是可以分别指定 %s、%d、%c、%f
等来输出或读取字符串、整数、字符或浮点数。
1 |
|
scanf()
期待输入的格式与给出的 %s
和 %d
相同,这意味着必须提供有效的输入,比如 string integer
,如果提供的是 string string
或 integer integer
,它会被认为是错误的输入。另外,在读取字符串时,只要遇到一个空格,scanf()
就会停止读取,所以 this is test
对 scanf()
来说是三个字符串。
getchar() & putchar() 函数
int getchar(void)
函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。可以在循环内使用这个方法,以便从屏幕上读取多个字符。int putchar(int c)
函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。可以在循环内使用这个方法,以便在屏幕上输出多个字符。
实例
1 |
|
结果:
1 | $./a.out |
gets() & puts() 函数
- char *gets(char *s) 函数从 stdin 读取一行到 s 所指向的缓冲区,直到一个终止符或 EOF。
- int puts(const char *s) 函数把字符串 s 和一个尾随的换行符写入到 stdout。
实例
1 |
|
结果:
1 | $./a.out |
linux系统下需要这样编译:不支持 gets
与 puts
, 需要用 fgets
和 fputs
。
将以下代码放到 test.c 文件:
1 |
|
编译执行以上代码,输出结果为:
1 |
|