• C语言从入门到精通之【printf和scanf函数】


    printf()是输出函数,scanf()是输入函数,但是它们的工作原理几乎相同。两个函数都使用格式字符串和参数列表。

    printf()函数的格式

    printf( 格式字符串, 待打印项1, 待打印项2,…);待打印项1、待打印项2等都是要打印的项。它们可以是变量、常量,甚至是在打印之前先要计算的表达式。格式字符串是双引号括起来的内容

    例如:printf(“The %d contestants ate %f berry pies.\n”, number, pies);

    注意:格式字符串中的转换说明一定要与后面的每个项相匹配,若忘记这个基本要求会导致严重的后果。

    printf()的转换说明修饰符

    sizeof运算符以字节为单位返回类型或值的大小。这个大小应该是某种形式的整数,但标准只规定该值是无符号整数。在不同的实现中,它可以是unsigned intunsigned long甚至是unsigned long long。因此,如果要使用printf()函数显示sizeof表达式,根据不同系统可能需要使用%u%lu%llu。这就意味着要查找当前系统的用法,如果将程序移植到不同的系统,可能需要进行修改。

    鉴于此,C提供了更好可移植性的类型。首先,stddef.h头文件(在包含stdio.h头文件时已包含其中)将size_t定义为系统使用sizeof返回的类型,这被称为底层类型(underlying type)。其次,printf()使用z修饰符表示打印相应的类型。同样,C还定义了ptrdiff_t类型和t修饰符,用来表示系统使用的两个地址差值的底层有符号整数类型。

    float类型

    对于浮点类型,有用于double和long double类型的转换说明,却没有float类型的。这是因为在K&R C中,表达式或参数中的float类型值会被自动转换成double类型。printf()函数中所有float类型的参数(对未使用显式原型的所有C函数都有效)仍自动转换成double类型。因此,无论是K&R C还是ANSI C,都没有显示float类型值专用的转换说明。

    printf()的返回值

    大部分C函数都有一个返回值,这是函数计算并返回给主调程序(calling program)的值,printf()函数也有一个返回值,它返回打印字符的个数。如果有输出错误,printf()则返回一个负值(printf()的旧版本会返回不同的值)。不过该函数的返回值基本不会用到

    看这个例子,打印“hello world”返回12(结束符和空格各占1个字节)。

    打印长字符串

    在一些大公司里,为了方便阅读,代码规范对每一行代码的长度有要求,例如linux内核规定一行不超过80字符,那我们就要换行了。

    如下图,如果是逗号后面换行无所谓,如果是双引号内直接换行就会报错

    一种方法是**加反斜杠 **,但是这种方法需要顶格,不然会有多余空白。

    还有一种方法是拆成多个双引号括起来的字符串。

    scanf函数

    scanf()中的格式字符串表明字符输入流的目标数据类型

    例如:scanf(“%s”, pet);

    就是将键盘输入的字符串保存到pet这个变量里,pet是个char类型的数组,字符串格式用%s。

    简单记住两条规则:

    用scanf()读取基本变量类型的值,在变量名前加上一个&;

    用scanf()把字符串读入字符数组中,不要使用&。

    &是取址符。

    C99标准中常用的转换说明

  • 相关阅读:
    Koa 源码剖析
    【前端知识】前端加密算法(base64、md5、sha1、escape/unescape、AES/DES)
    EasyRAFT
    WSUS 修补程序管理的替代方法
    【DL】Windows 10系统下安装TensorRT教程
    【LeetCode动态规划#13】买卖股票含冷冻期(状态众多,比较繁琐)、含手续费
    云原生系列三:K8s应用安全加固技术
    SolrCloud环境搭建
    MFC由初值终值步长生成数值序列
    Selenium4+Python3系列(九) - 上传文件及滚动条操作
  • 原文地址:https://blog.csdn.net/qq_41922569/article/details/134406958