C语言格式输入与输出深度剖析

简介: C语言格式输入与输出深度剖析

所谓数据的输入输出是从计算机角度出发的。


C语言本身没有I/O语句,所有I/O都由函数来实现。


C语言的标准库函数


由编译系统提供的一系列函数,以库形式存放在系统中,不是C语言文本的组成部分。


库函数已编译成目标文件(.obj),在连接阶段才与源程序编译成的目标文件相连接,生成可执行文件。


调用形式:


函数名(参数表)


注意在调用C语言库函数时,需要使用编译预处理命令#include <相关的头文件>,使相应的头文件包含到用户源程序中。


头文件


C语言中,输入输出用到的头文件是


#include <stdio.h> 
#include “stdio.h”


常用头文件:


stdio.h   定义输入输出函数
string.h 定义字符串操作函数
math.h  定义sin、cos等数学函数


格式输入与输出


printf函数(格式输出函数)


printf函数的一般格式


格式:


printf( 格式控制,输出表列);


格式控制:用双引号括起来的字符串,包含两种信息


  • 格式说明:%[修饰符]格式字符,指定输出格式


  • 普通字符:原样输出


输出列表:要输出的数据,可以是变量或表达式,可以没有,多个时以“,”分隔)


比如下面的写法:


printf( “%d %d”,a,b);
printf( “a=%d  b= %d\n”,a,b);


格式字符


%d格式符:输出十进制整数,有3种用法


%d格式:按数据实际长度输出,数据范围 -32768~32767。2个字节


// %d 格式的 printf() 函数使用案例
#include <stdio.h> 
int main()
{
    int a = 3, b = 4;
    printf("%d  %d\n ", a, b);
    printf("a = %d, b = %d\n", a, b);
    return 0;
}


运行结果:


3  4
a=3, b=4


格式说明通常用小写字母表示


%md格式:m指定输出字段的宽度


数据位数小于m,左端补空格,反之按实际输出。


int a=123,b=12345 ;
printf(“%4d%4d ”,a ,b);       


输出结果:



%ld格式:输出长整型数据


可以用%mld格式指定输出列宽


long c=135790;
printf(“%ld\n”,c);    
printf(“%8ld”,c);    



o格式符:八进制输出整数


是将内存中的二进制位整个按八进制输出,所以输出值没有符号。


可以指定输出宽度%mo,长整型可以用%lo格式输出。


x格式符:十六进制输出整数


同o格式符,无符号,即无负十六进制数。


可以指定输出宽度%mx ,长整型可以用%lx格式输出。


int a= -1;
printf(“%d , %o , %8o , %x ”,  a , a , a , a);



u格式符:十进制输出unsigned型数据


int型可以用%u格式输出,unsigned型也可以用%d、%o和%x格式输出。


#include <stdio.h>
int main()
{
    unsigned int a = 65535;
    int b = -2;
    printf("a = %d, %o, %x, %u\n", a, a, a, a);
    printf("b = %d, %o, %x, %u\n", b, b, b, b);
    return 0;
}



c格式符:输出一个字符


值在0~255的整数,可以用%c形式输出为字符


//【字符数据的输出】
#include <stdio.h>
int main()
{
    char c = 'a’;
    int i = 97;
    printf("%c, %d\n", c, c);
    printf("%c, %d\n", i, i);
    return 0;
}



//【字符串的输出】
#include <stdio.h>
int main()
{
    printf("%3s, %7.2s, %.4s, %-5.3d\n", "CHINA","CHINA", "CHINA", "CHINA");
    getchar();
    return 0;
}


f格式符:输出实数


%f格式:整数部分全部输出,小数6位。可以有非有效数字输出,因为单精度有效位7位,双精度16位。


%m.nf格式:占m列,其中n位小数,左补空格。


% -m.nf格式:右补空格


e格式符:指数形式输出实数


%e格式:不指定m和n,小数6位,指数部分共5位,其中e和指数符号各1位,指数值3位。


%m.ne和% -m.ne格式:m、n、-的含义同前面。没有n时,自动=6。


g格式符:输出实数


可以自动根据数值大小选择 f 或 e 格式(选列少的)


不输出无意义的零


47328b17bde7b88134a08077f3831f1e_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5rWB5qWa5Li25qC85b-1,size_20,color_FFFFFF,t_70,g_se,x_16.png


scanf 函数(格式输入函数)


一般形式


格式:


scanf(格式控制,地址表列 );


  • 功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束


  • 格式控制:含义同printf函数


  • 地址表列:变量地址或字符串地址,地址间“,”分隔。


  • 强调:地址列表中每一项必须以取地址运算符&开头。


// 【用scanf函数输入数据】
#include <stdio.h>
int main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    printf("%d, %d, %d\n", a, b, c);
    return 0;
}



案例:输入三角形边长,求面积


#include <math.h>
#include <stdio.h>
// 我没进行判断啥的   见谅   这里就用一下输入输出就行
int main()
{
    float a, b, c, s, area;
    scanf("%f,%f,%f", &a, &b, &c);
    s = 1.0 / 2 * (a + b + c);
    area = sqrt(s*(s - a)*(s - b)*(s - c));
    printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n", a, b, c, s);
    printf("area=%7.2f\n", area);
    return 0;
}


1071c4c5bd4bb0a2947ae78d2ec3c201_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5rWB5qWa5Li25qC85b-1,size_20,color_FFFFFF,t_70,g_se,x_16.png

相关文章
|
1月前
|
存储 安全 C语言
深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)-2
深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)-2
|
1月前
|
存储 编译器 C语言
深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)-1
深度剖析c语言程序 -- 函数栈帧的创建和销毁(纯肝货)-1
|
1月前
|
存储 C语言 C++
C语言------------指针笔试题目深度剖析
C语言------------指针笔试题目深度剖析
19 1
|
4月前
|
存储 C语言
C 语言教程:数据类型和格式说明符
C 中的变量必须是指定的数据类型,并且您必须在 printf() 函数中使用格式说明符来显示它:
95 2
|
6月前
|
存储 C语言
C语言进阶第一课 -----------深度剖析数据在内存中的存储2
C语言进阶第一课 -----------深度剖析数据在内存中的存储
|
6月前
|
存储 小程序 编译器
C语言进阶第一课 -----------深度剖析数据在内存中的存储1
C语言进阶第一课 -----------深度剖析数据在内存中的存储
206 1
|
6月前
|
存储 算法 C语言
C语言深度剖析指针
C语言深度剖析指针
49 0
|
16天前
|
编译器 C语言 C++
C语言printf的输出格式大全及颜色字体打印
C语言printf的输出格式大全及颜色字体打印
24 0
|
1月前
|
存储 小程序 C语言
【深度剖析数据在内存中的存储】C语言
【深度剖析数据在内存中的存储】C语言
|
1月前
|
存储 小程序 C语言
【C语言进阶】深度剖析数据在内存中的存储
【C语言进阶】深度剖析数据在内存中的存储