📜  用C格式说明符

📅  最后修改于: 2021-05-25 21:30:40             🧑  作者: Mango

在输入和输出期间使用格式说明符。这是一种告诉编译器在使用scanf()进行输入或使用printf()进行打印的过程中变量中包含哪种类型的数据的方法。一些示例是%c,%d,%f等。
printf()和scanf()中的格式说明符基本相同,但是会有一些区别。

printf(char * format,arg1,arg2,…)

此函数在标准输出上打印字符,并返回打印的字符数,字符格式为以开头的字符串,并以转换字符(例如c,i,f,d等)结尾。
在这两者之间,可以存在控制打印格式的元素。下面是它的描述

  1. 减号(-)表示左对齐。
  2. 后面的数字指定如果字符小于宽度大小且剩余空间被空格填充,并且大于其原样打印而不被截断的情况下要打印的最小字段宽度。
  3. 句点(。)符号将字段宽度与精度分开。

精密讲述了在整数位,字符的最大数目的字符串和号码的位数在浮点值小数部分后。
让我们看看这些。
字符格式说明符:%c

C
#include 
int main()
{
    char ch = 'A';
    printf("%c\n", ch);
    return 0;
}


C
#include 
int main()
{
    int x = 45, y = 90;
    printf("%d\n", x);
    printf("%i\n", x);
    return 0;
}


C
#include 
int main()
{
    // The -10 value is converted into it's positive
    // equivalent by %u
    printf("%u\n", -10);
    printf("%u\n", 10);
    return 0;
}


C
#include 
int main()
{
    float a = 12.67;
    printf("%f\n", a);
    printf("%e\n", a);
    return 0;
}


C
#include 
int main()
{
    int a = 67;
    printf("%o\n", a);
    return 0;
}


C
#include 
int main()
{
    int a = 15;
    printf("%x\n", a);
    return 0;
}


C
#include 
int main()
{
    char a[] = "geeksforgeeks";
    printf("%s\n", a);
    return 0;
}


C
#include 
int main()
{
    int a = 10;
    printf("The Memory Address of a: %p\n",(void*)&a);
    return 0;
}


C
#include 
int main()
{
    char str[] = "geeksforgeeks";
    printf("%20s\n", str);
    printf("%-20s\n", str);
    printf("%20.5s\n", str);
    printf("%-20.5s\n", str);
    return 0;
}


C
#include 
int main()
{
    int a = 0;
    scanf("%d", &a); // input is 45
    printf("%d\n", a);
    return 0;
}


C
#include 
int main()
{
    int a = 0;
    scanf("%i", &a); // input is 017 (octal of 15 )
    printf("%d\n", a);
    scanf("%i", &a); // input is 0xf (hexadecimal of 15 )
    printf("%d\n", a);
    return 0;
}


C
#include 
int main()
{
    double a = 0.0;
    scanf("%lf", &a); // input is 45.65
    printf("%lf\n", a);
    return 0;
}


C
#include 
int main()
{
    char str[20];
    scanf("%s", str); // input is geeksforgeeks
    printf("%s\n", str);
    return 0;
}


C
#include 
int main()
{
    char ch;
    scanf("%c", &ch); // input is A
    printf("%c\n", ch);
    return 0;
}


输出:
A

对于带符号整数格式说明符:%d,%i

C

#include 
int main()
{
    int x = 45, y = 90;
    printf("%d\n", x);
    printf("%i\n", x);
    return 0;
}
输出:
45
45

无符号整数格式说明符:%u:

C

#include 
int main()
{
    // The -10 value is converted into it's positive
    // equivalent by %u
    printf("%u\n", -10);
    printf("%u\n", 10);
    return 0;
}
Output: 4294967286
        10

浮点格式说明符:%f,%e或%E

C

#include 
int main()
{
    float a = 12.67;
    printf("%f\n", a);
    printf("%e\n", a);
    return 0;
}
输出:
12.670000
1.267000e+01

整数的无符号八进制数字:%o

C

#include 
int main()
{
    int a = 67;
    printf("%o\n", a);
    return 0;
}
输出:
103

整数的无符号十六进制:%x,%X

C

#include 
int main()
{
    int a = 15;
    printf("%x\n", a);
    return 0;
}
输出:

f

字符串打印:%s

C

#include 
int main()
{
    char a[] = "geeksforgeeks";
    printf("%s\n", a);
    return 0;
}
输出:
geeksforgeeks

地址打印:%p

当我们打算打印变量/指针的内存地址时,’%d’将不起作用,因为’%d’将尝试将地址格式化为数字,并且像0xbfdd812这样的值显然不是数字,即我们必须使用% p。

C

#include 
int main()
{
    int a = 10;
    printf("The Memory Address of a: %p\n",(void*)&a);
    return 0;
}
Output: The Memory Address of a: 0x7ffc85861624

更多格式

C

#include 
int main()
{
    char str[] = "geeksforgeeks";
    printf("%20s\n", str);
    printf("%-20s\n", str);
    printf("%20.5s\n", str);
    printf("%-20.5s\n", str);
    return 0;
}
输出:
geeksforgeeks
geeksforgeeks       
               geeks
geeks

scanf(char * format,arg1,arg2,…)

此函数使用标准输入(键盘)获取输入,并将其相应地存储在变量中。它返回成功读取的项目数。形式参数arg1,agr2,..必须是一个指针
十进制整数:%d

C

#include 
int main()
{
    int a = 0;
    scanf("%d", &a); // input is 45
    printf("%d\n", a);
    return 0;
}

整数可以是八进制或十六进制:%i

C

#include 
int main()
{
    int a = 0;
    scanf("%i", &a); // input is 017 (octal of 15 )
    printf("%d\n", a);
    scanf("%i", &a); // input is 0xf (hexadecimal of 15 )
    printf("%d\n", a);
    return 0;
}

双浮点数:%lf

C

#include 
int main()
{
    double a = 0.0;
    scanf("%lf", &a); // input is 45.65
    printf("%lf\n", a);
    return 0;
}
输出:
45.650000

字符串输入:%s

C

#include 
int main()
{
    char str[20];
    scanf("%s", str); // input is geeksforgeeks
    printf("%s\n", str);
    return 0;
}
输出:
P@

字符输入:%c

C

#include 
int main()
{
    char ch;
    scanf("%c", &ch); // input is A
    printf("%c\n", ch);
    return 0;
}

还有许多其他格式说明符
1.%u为无符号整数。
2.%lld for long long int。
3.%o八进制整数,不带前导零
4.%x十六进制整数,数字前不带0x。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。