数据输入输出的概念及在C语言中的实现

发布时间:2024年01月08日

前言概括

1 所谓输入输出是以计算机为主体而言的

2 本章介绍的是向标准输出设备显示器输出数据的语句

3 在C语言中,所有的数据输入、输出 都是由库函数完成的,因此都是函数语句

4 在使用C语言库函数时,要用编译命令#include将有关“头文件”包括到源文件中,使用标准输入输出库函数时要用到“stdio.h”文件,因此源文件开头由以下预编译指令

#include<stdio.h>或者#include"stdio.h"

stdio是standard input&output的意思标准的输入输出

5 考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时不需要加#include<stdio.h>或#include"stdio.h"

putchar

putchar函数是字符输出函数,功能是在显示器上输出单个字符

一般形式:putchar(字符变量)

例如:
 ? ?putchar('A');//输出大写字母A
 ? ?putchar(x);//输出字符变量x的值
 ? ?putchar('\101')//也是输出字符A
 ? ?putchar('\n')//换行

对控制字符则执行控制功能,不在屏幕上显示(\n)

注意:在使用putchar前必须要用头文件包含命令#include<stdio.h>

#include<stdio.h>
void main()
{
 ? ?char a='B',b='o',c='k';
 ? ?putchar(a);putchar(a);putchar(a);
 ? ?putchar(a);putchar(a);putchar(a);
 ? ?putchar('\n');
 ? ?putchar(b);
 ? ?putchar(c);
}
?

getchar

getchar函数的功能是从键盘上输入一个字符

一般形式:getchar();

通常把输入的字符赋予一个字符变量,构成赋值语句,如:

char c;
c=getchar();
例如:
#include<stdio.h>
void main()
{
 ? ?char c;
 ? ?printf("input a character \n");
 ? ?c=getchar();//输入字符数据
 ? ?putchar(c);//输出字符
}
?

printf

printf又叫格式输出函数,其关键最末的一个字母f即为”格式(format)之意“

功能就是按照用户指定的格式,把指定的数据显示道显示屏幕中

一般形式:printf(”格式控制字符串“,输出表列);

%d//十进制输出
%ld//十进制长整型输出
%c///字符型输出
例如:
#include<stdio.h>
void main()
{
 ? ?int a=88,b=89;
 ? ?printf("%d,%d \n",a,b);
 ? ?printf("%d,%d \n",a,b);
 ? ?printf("%c,%c \n",a,b);//输出的是ascII码对应的值
 ? ?printf("a=%d,b=%d \n",a,b);
}

在printf里面有一个易错的理解:

使用printf函数还要注意一个问题,那就是输出表列中的求值顺序,不同的编译系统不一样相同,可以从左到右,也可以从右到左。turvbo C是按从右到左进行的

#include<stdio.h>
void main()
{
 ? ?int i=8;
 ? ?printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,++i,--i,i++,i--,-i++,-i--);
}
//只有在printf中,++i,--i可以抵消,i++i--不可抵消,也就是说,第二个和第三个抵消掉了,我们在第四位算出是i=8,也就是说前面都是i,i,i
//从右往左算
#include<stdio.h>
void main()
{
 ? int i = 8;
 ?printf(“%d\n”,++i);
 ?printf(“%d\n”,--i);
 ?printf(“%d\n”,i++);
 ?printf(“%d\n”,i--);
 ?printf(“%d\n”,-i++);
 ?printf(“%d\n”,-i--);
}

格式字符串、精度问题

%d ?十进制输出整数值
%o ?八进制输出整数值
%x ?十六进制输出整数值
%u ?无符号数形式输出整数值
%c ?输出字符值
%s ?使出字符串
%f ?输出十进制浮点数
%e ?科学计数法输出浮点数
%g ?等价于%f或%e,输出两者占位较短的
例如:
#include<stdio.h>
void main()
{
 ? ?int a=15;
 ? ?float b=123.1234567;
 ? ?double c=12345678.1234567;
 ? ?char d='p';
 ? ?printf("a=%d,%5d,%o,%x\n",a,a,a,a);
 ? ?
//%5d表示输出五位占位的数,输出五位,在15前面有三个空格
 ? ?
 ? ?printf("b=%f,%lf,%5.4lf,%e",b,b,b,b);
 ? ?
//"%5.4lf"指定输出宽度为5,精度为4,由于实际长度超过5,故应该按实际位数输出
//%f和%if保留六位小数(最后一位小数会自动进行四舍五入的转换(不是十进制的四舍五入)) ? ?
//为什么%f输出的是123.123459呢?是因为float是单精度,不是很准确,很容易计算错误,如果是double那么就不会出现四舍五入的错误了
//用flaot会出现精度问题,建议使用double
 ? ?
 ? ?printf("c=%lf,%f,%8.4lf\n",c,c,c);
 ? ?
//c=12345678.123457,12345678.123457,12345678.1235
 ? ?
 ? ?printf("d=%c,%8c\n",d,d);
 ? ?
//d=p, ? ? ? p
 ? ?
}

文章来源:https://blog.csdn.net/2301_81650162/article/details/135451449
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。