1.printf()函数
printf
是C语言中的一个非常重要的函数,包含于<stdio.h>头文件,用于将输出数据格式化并打印到标准输出设备(通常是控制台)。
int printf(const char *format, ...);
printf
函数的第一个参数是一个格式字符串(const char *format
),用于指定输出的格式。格式字符串中可以包含普通字符和格式转换说明符,格式转换说明符以百分号(%)开头。
当然,读者不明白也没有任何关系,只需要知道,有一类特殊的字符,它们组合起来并不会直接进行输出,而是作为数值,字符的替换,它们就是格式转换说明符,可以看看下列如何使用,将代码打出来,运行一下就会大概理解。
格式转换说明符可以根据输出的类型不同,采用不同的占位符来表示。以下是常用的格式转换说明符和对应的占位符:
%c
:用于输出字符。%d
:用于输出有符号十进制整数。%u
:用于输出无符号十进制整数。%f
:用于输出浮点数。%s
:用于输出字符串。%p
:用于输出指针的地址。%x
:用于输出十六进制整数,并使用小写字母表示。
除了格式字符串之外,printf
函数还可以接受可变数量的参数。这些参数与格式字符串中的格式转换说明符一一对应,用于提供要输出的数据。
printf
函数的返回值是成功打印的字符数,如果出现错误则返回负值。
下面是一些示例用法:
#include <stdio.h>
int main()
{
int age = 20; // 一个整型数据
float height = 1.75; // 一个浮点数
char name[] = "John"; // 字符串
printf("My name is %s, I am %d years old and %f meters tall.\n", name, age, height);
return 0;
}
输出结果为:
My name is John, I am 20 years old and 1.750000 meters tall.
printf
函数还支持一些其他的格式化选项,如指定输出的宽度、精度、对齐方式等。可以参考C语言的文档或教程来了解更多关于printf
函数的详细用法。
本段代码中,也包含了最基本的框架,main函数中放着执行语句。读者也可以看到,%s,%d等并没有直接输出出来,而是被替换成了引号之后那些变量所对应的值,且它们与数据类型依次对应。如第二个格式转换说明符%d所对应的就是第二个逗号后的整形变量age(%f也类推),这些就是格式说明符。格式说明符是一种特殊的标识,它在程序的输出中作为占位使用(因为输出时会将变量的数值替换掉对应的格式说明符)。
而对于 ‘\n‘,这是一个转义序列,含义是换行,当输出的时候,遇到了换行符,那么换行符之后的字符,都会在下一行输出,一个换行符只会换一行,两个就会换行两行,以此类推,当然,类似的转义序列还有很多,后文会为大家简单介绍。读者可以将换行符移动至 “, I am” 逗号与 字母 ‘I’之间,可以发现,I am… 后的内容,在控制台的第二行进行了输出。
更多转移序列请参阅:附录:01-3——输入与输出——常见转义序列表
2.scanf()函数
scanf
是C语言中用于从标准输入设备(通常是键盘)读取输入数据的函数。
scanf
函数的基本语法如下:
int scanf(const char *format, ...);
scanf
函数的第一个参数是一个格式字符串(const char *format
),用于指定输入的格式。格式字符串中可以包含普通字符和格式转换说明符,格式转换说明符以百分号(%)开头。
格式转换说明符可以根据输入的类型不同,采用不同的占位符来表示。以下是常用的格式转换说明符和对应的占位符:
%c
:用于读取一个字符。%d
:用于读取一个有符号十进制整数。%u
:用于读取一个无符号十进制整数。%f
:用于读取一个浮点数。%s
:用于读取一个字符串。%p
:用于读取一个指针的地址。
除了格式字符串之外,scanf
函数还可以接受可变数量的参数。这些参数与格式字符串中的格式转换说明符一一对应,用于提供存储读取数据的变量。
scanf
函数的返回值是成功读取的参数数目,如果出现错误则返回负值。
下面是一些示例用法(请读者自行将main函数中的内容替换即可):
#include <stdio.h>
int main()
{
int age;
float height;
char name[50]; // 存储字符串
printf("Enter your age: ");
// scanf函数的引号内,不允许有一些提示性的内容,提示性的内容应该由printf函数完成
// 引号内,使用格式说明符号即可,在引号后,跟上一个取地址符和想要赋值的变量
// 下面的语句执行后,会看到程序等待用户的输入,这个时候输入一个数,点击回车键,完成输入
scanf("%d", &age);
printf("Enter your height: ");
scanf("%f", &height);
printf("Enter your name: ");
scanf("%s", name);
printf("Name: %s, Age: %d, Height: %.2f\n", name, age, height);
return 0;
}
在上面的示例中,scanf
函数分别读取了用户输入的年龄、身高和姓名,并将它们存储在相应的变量中,然后通过printf
函数将这些值打印出来。
一些小概念:
需要注意的是,在读取字符数组(char name[50]就是一个字符数组,初学者不懂什么是数组,可以先放着)时,不需要使用取地址符(&),因为数组名本身就代表了数组的地址。
什么是字符串?如:"hello"
,这样用双引号引起的内容,就是字符串,而'a'
这样用单引号引起来的字符,称为字符。这是读者需要分清楚的。只要是双引号引起来的,就是字符串,关于字符串的更多内容,我们将在数组
章节更多说明。
scanf函数还支持一些其他的格式化选项,如指定最大输入字符数、跳过前导空白字符等。可以参考C语言文档或教程来了解更多关于scanf函数的详细用法。
更多格式说明符请参考:附录:01-3——输入与输出——常见格式说明符表
没有回复内容