Ⅰ )概述
C语言的语句是用来向计算机系统发出操作指令的。当要求程序按照要求执行时,先要给它一个指示,这个时候就要使用向程序输入数据的方式。当程序解决了一个问题,还要使用输出的方式将执行的结果显示出来。C语言中常用的数据输入输出函数主要包括:字符数据输入输出函数getchar(),putchar()、字符串输入输出函数gets(),puts()和格式输入输出函数scanf()和printf()函数,使用这些输入输出函数是都要包含头文件 stdio.h。
Ⅱ)数据输入输出函数
2.1.1 字符数据输入函数
字符数据输入使用的是getchar 函数,此函数的作用是从输入设备输入一个字符。
getchar函数的定义为: int getchar();
getchar 函数没有参数,函数的值是从输入设备(一般是指键盘)输入一个字符。
例如:从输入设备得到一个字符变量值附给字符变量,首先需要定义一个char型的字符 变量,然后使用getchar 函数将输入的字符赋给已经定义的char型变量,代码如下:
char C; C=getchar();
通过getchar函数就可以将键盘输入的字符数据赋给字符变量C。
需要注意的是:getchar()只能接受一个字符。getchar函数得到的字符还可以作为表达式的一部分。例如: putchar(getchar());
getchar函数作为putchar()函数参数,当getchar 函数从输入设备得到字符后,putchar 函数将字符输出。
getchar函数得到的字符除了可以赋给字符变量外还可以赋给整形变量,将getchar函数得到的字符赋给整形变量输出的是该字符变量的ASCⅡ码。
例如:
#include<stdio.h>
int main()
{
int a; //定义一个整形变量
a = getchar(); //将getchar得到值赋给一个整形变量a得到
printf("%d\n", a);//输出整形变量a
return 0;
}
从键盘输入赋给整形变量的字符A输出A的ASCⅡ码65.
2.12 字符数据输出函数
字符数据输出使用的是putchar函数,作用是向显示设备输出一个字符。
该函数的定义为: int putchar(int ch); 其中ch为要进行输出的字符,可以是字符型变量、整形变量或常量。
例如输出一个字符A的代码如下:
putchar('A');
putchar函数的使用比较简单,例如使用putchar函数输出字符串“Tom”:
#include<stdio.h>
int main()
{
char c1, c2, c3; //定义三个char型变量
c1 = 'T'; //变量赋值
c2 = 'o';
c3 = 'm';
putchar(c1); //使用putchar函数输出
putchar(c2);
putchar(c3);
printf("\n");
return 0;
}
2.2.1 字符串输入函数
字符串输入函数为gets 函数,作用是将读取的字符串保存在形式参数 str中,读取过程直到出现新的一行为止。其中新的一行的换行字符将会转化为字符串中的空终止符“\0”。gets函数的定义为:
char* gets(char* str); 其
中的str字符指针变量为形式参数,例如定义字符数组变量String,然后使用gets 函数获取输入字符串,代码如下:
char String[20]; gets(String);
在上面的代码中,Cstring 变量获取到了字符串,并将最后的终止符“\0”转换为换行符。
字符串输入函数举例:
#include<stdio.h>
int main()
{
char str[50]; //定义char型数组来储存字符串
gets(str); //输入字符串
printf("%s\n", str); //利用printf函数输出
puts(str); //利用puts 函数输出
return 0;
}
程序运行结果:
通过键盘输入“Hello Tom and Jerry"通过printf 函数和puts 函数都可以进行输出。puts 函数数将在后面介绍,值得注意的是:
使用puts函数没有输入转义字符“\n”,但执行结果却自动换行。这是因为:编译器会在字符串常量的末添加“\0”,puts函数会在字符串中判断“\0”,结束符,遇到结束符时,后面的字符不在输出并且自动换行。printf("%s\n", str); //利用printf函数输出
puts(str); //利用puts 函数输出
2.2.2 字符串输出函数
字符串输出使用的是puts 函数,作用是输出一个字符串到屏幕上。
该函数的定义为:int puts(char* str);
其中形式参数str是字符指针类型,可以接收要进行输出的字符串。例如:使用puts函数输出一串字符: puts("Tom and Jerry");
这条语句执行后后输出一个字符串“Tom and Jerry”并自动换行。这与printf函数有所不同,printf函数进行换行时,要在其中添加转义字符"\n"但是puts函数会在字符串中判断“\0”,结束符,遇到结束符时,后面的字符不在输出并且自动换行。
例如:puts("Tom \0 andJerry");
执行此语句遇到"\0",就会自动结束输出"\0"前面的字符串,输出"Tom"。
字符串输出函数举例:
#include<stdio.h>
int main()
{
char* c = "Tom and Jerry"; //定义字符串指针变量
puts("Tom and Jerry"); //输出
puts("Tom\0 and Jerry"); //输出,在Tom 后面加“\0”
puts(c); //输出字符串变量的值
return 0;
}
运行结果:
通过例子,我们可以很好的理解字符串输出函数puts。puts函数用于字符串输出,当使用puts输出字符串常量时,如果在字符串中没有结束符"\0",则输出的字符会一直到最后编译器为其字符串添加的结束符"\0",如果在字符串中添加"\0",则只输出"\0"前面的内容,同是我们也可以将字符串赋值给一个指针变量或字符数组,同过指针变量名或字符数组名输出字符串。
2.3.1 格式输入函数
格式输入函数scanf的功能是可以制定固定的格式,并且按照指定的格式,接收用户在键盘上输入的数据,最后将数据存储在指定的变量中。scanf 函数的一般形式为:
scanf(格式控制,地址列表);
例如:从键盘输入一个整形数据的操作,C语言语句为:scanf("%d", &a);
"& "为取地址运算符,表示取变量a的地址。在编写程序时,在scanf函数的参数地址列表一定要使用变量的地址,而不是变量的标识符,否则编译器会提示错误。
例:从键盘输入圆的半径,求圆的面积:
这是一个相对简单的例子,通过scanf函数从键盘输入要计算面积的圆半径,然后通过公式计算圆面积,并输出。#include<stdio.h>
#define PI 3.14 //宏定义圆周率PI
int main()
{
float radius;
float area;
printf("请输入圆的半径:\n"); //提示输入圆半径
scanf("%f", &radius); //输入圆半径
area = PI*radius*radius;
printf("圆的面积为:%6.3f", area); //%6.3f 表示输出占6个字节保留3位小数
return 0;
}
2.3.2 格式输出函数
printf函数就是格式输出使用的函数,也称为格式输出函数。printf函数的作用是向输出设备输出数据,其一般格式为: printf(格式控制,输出列表);
(1)格式控制是指用" "括起来的内容。其中包括两种字符,一种是格式字符,另一种是普通字符。
①格式字符用来进行格式说明,说明输出数据的类型。格式字符是以“%”开头的。
表示以十六进制整数形式输出定义的变量a,执行会输出124的16进制数 :7c。int a=124;
printf("%x", a);
②普通字符是需要原样输出的字符,其中包括双引号内的逗号,空格和换行符。 例如:
printf("Hello world\n");
则输出 “Hello world”并进行换行。
(2)输出列表中列出的是要进行输出的一些数据,可以是变量名或表达式。
例如:
执行上面的语句输出"This is 10" 在格式控制双引号中的字符是“This is %d”,其中的this is 字符是普通字符,而“%d”是格式字符,表示后面输出的是整型变量a的值。int a = 10;
printf("This is %d\n", a);
下面介绍一个比较有意思的输出:
#include<stdio.h>
int main()
{
printf("%d\n", (printf("%d", printf("%d", 43))));
return 0;
}
这段代码执行输出:4321 运行结果如下图:
解释这个问题,我们需要知道printf 函数的返回值。printf函数的返回值是被打印字符的个数。这段代码首先执行
printf("%d",43);这时输出43。我们知道printf函数有两个参数,printf("%d",printf("%d",43));在这个语句中后面的
printf("%d",43)可以看作是printf("%d",printf("%d",43));的一个参数,所以其返回值是打印字符“43”的个数2,同理,
最后一个打印出来的值是字符"2"的个数即1,所以,其运行结果为:4321。