在输入和输出期间使用格式说明符。这是一种告诉编译器在使用scanf()进行输入或使用printf()进行打印的过程中变量中包含哪种类型的数据的方法。一些示例是%c,%d,%f等。
printf()和scanf()中的格式说明符基本相同,但是会有一些区别。
printf(char * format,arg1,arg2,…)
此函数在标准输出上打印字符,并返回打印的字符数,字符格式为以%开头的字符串,并以转换字符(例如c,i,f,d等)结尾。
在这两者之间,可以存在控制打印格式的元素。下面是它的描述
- 减号(-)表示左对齐。
- %后面的数字指定如果字符小于宽度大小且剩余空间被空格填充,并且大于其原样打印而不被截断的情况下要打印的最小字段宽度。
- 句点(。)符号将字段宽度与精度分开。
精密讲述了在整数位,字符的最大数目的字符串和号码的位数在浮点值小数部分后。
让我们看看这些。
字符格式说明符:%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。