C语言学习笔记:C语言中占位符汇总

在C语言学习的时候,我跟随的是中国大学慕课平台中浙江大学翁凯教授的“C语言程序设计”课程,在跟随视频学习的时候我发现老师时常在在课程中提到占位符。却没有系统具体地介绍过。于是特地搜集汇总如下:


定义:

定义:占位符是在C语言开发中负责格式化输出的特殊字符。

下面来看一种常用的格式化例子。

#include <stdio.h>
int main(){
    int amount = 0;
    int price = 0;
    
    printf("请输入金额(元):");
    scanf("%d",&price);

    printf("请输入票面(元):");
    scanf("%d",&amount);

    int change = amount - price;
    printf("找您%d元",change);


    return 0;
    
}

在这个处理找零的程序中,“%d”就是一个占位符,用于在printf函数输出时先占一个位置,在等待变量的具体的值的输入。

但是占位符有具体的格式限定,比如刚才的代码中之所以用“%d”是因为变量amount,price都是int类型的。

那么,不同的变量类型都对应什么占位符呢?


C语言占位符汇总:

C语言占位符汇总
占位符 占位符的具体格式
%d,%i 整数
%f 浮点数
%p 指针
%fL 长log
%e 科学计数
%g 小数或科学计数
%a,%A 读入一个浮点值(仅C99有效)
%c 读入一个字符
%d 读入十进制整数
%i 读入十进制,八进制,十六进制整数
%o 读入八进制整数
%x,%X 读入十六进制整数
%s 读入一个字符串,遇到空格、制表符或换行符结束。
%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数或者指数形式输入
%u 读入一个无符号十进制整数
%n 至此已读入值的等价字符串
%[] 扫描字符合集
%% 读%符号

但是总结了那么多占位符的用法,我却不能很好地理解其中一些占位符的意思,我将其中的一些用红色标记了出来,准备探索具体的用法。


部分占位符具体用法:


1."%c","%s"和"%n"的区别辨析:

%c在C语言中代表字符型格式符。

%s在C语言中代表字符串型格式符。

说了等于没说,我们放到代码中具体看一下:

#include <stdio.h>

int main()
{
    char c = 'A'; 
    printf("用占位符输出一个字符:%c\n",c);

    char s[] = "字符串";
    printf("用占位符输出一个字符串:%s\n",s);

    return 0;
    
}

看一下输出:

 基本懂了,在附上一些字符和字符串的区别作为参考资料。

1.C语言中字符定义为一种基本数据类型(char),表示单个字符;字符串不是基本数据类型,但可以通过char的数组代替,末尾用’\0’结束。


2.字符串一定是一个char型数组,但是char型数组不一定是字符串;char型数组和字符串的 区别就是是否在末尾处有‘\0’。


3.char是一个单独的字符,在32位系统中占用1个字节的存储空间;字符串是固定长度的连续空间(实际上就是数组的定义)。

下面来看更加复杂的"%n":

1.%n与其他格式说明符号不同。%n不向printf传递格式化信息,而是令printf把自己到该点已  打出的字符总数放到相应变元指向的整形变量中。因此%n对于的变元必须是整形指针。

2.对printf调用返回之后,%n对于变元指向的变量中将包含有一个整数值,表示出现%n时已经由该次printf调用输出的字符数。

看不懂,直接上代码:

#include <stdio.h>

int main()
{
    int count = 0;
    
    printf("this%n is a test\n",&count);
    printf("%d",count);

    return 0;
}

这段代码的输出很有意思,我们来看一下:

 结合资料和代码了解到:%n是一个特殊的格式说明符,它不打印某些内容,printf() 统计出现在 %n 之前的字符数,并将该值赋值给参数变量。


2.%[]的用法:

%[]一般只用在scanf函数中用于格式控制符。让我们举个例子:

如果我要只读入小写字母的字符串,这个问题要如何通过scanf函数解决呢?

这里就考虑用到%[]这个格式控制符,它支持a-z这样的格式控制:

char s[];
scanf("%[a-z]",s);

除此之外,%[]还有很多进阶的用法,大家可以参考下面的链接:

scanf格式控制符之%[]的应用    这篇博客写的很好,这里不再赘述。


结语:

第二篇博客,多多包涵❥(^_-)

参考资料:

c语言中%s的作用,C语言中%c,%s分别代表什么意思?

C语言常用占位符

C语言之字符串和字符的区别

scanf格式控制符之%[]的应用

猜你喜欢

转载自blog.csdn.net/antonymbaobwang/article/details/132303102
今日推荐