scanf和printf格式问题

本文详细介绍了C语言中常用的输入输出函数,包括scanf()函数和printf()函数的使用方法及格式控制符。针对不同数据类型如何正确使用这些函数进行输入输出,并提供了多种格式化的示例。

一.scanf函数

1.该函数可以获取任意数据类型的输入,但是必须指定输入格式:

%c读入一个字符
%s读入一个字符串
%d读入一个十进制数
%[^\n]读入一组字符串
%f读入一个单精度浮点数
%lf读入一个双精度浮点数
%0读入一个八进制数
%x读入一个十六进制数
%e读入一个科学计数法的数
  
  
2.该函数可以连续读入

如:scanf("%d%d",&num,&num);  这表示连续读入两个十进制整数(你还可以读入更多)

在这里‘&’表示取地址符,表示将输入的数值写入num的地址内存地址。

说明:所有的变量多需要保存在内存地址中,在输入时在变量前加上'&'.但是特别注意字符串变量名就代表一个地址内存,因此前面并不需要添加'&'.   

如:  scanf("%s%c",name,&c);

3.按格式输入

  • 输入值以“,”逗号分隔:scanf("%d,%d",&num1,&num2);
  • 输入值以“:”冒号分隔:scanf("%d:%d",&num1,&num2);
  • 输入值以“/”斜杠分隔:scanf("%d/%d",&num1,&num2);
等等自己还可以写很多。

二.printf()函数

该函数是用来显示字符、字符串、数值等等。

在printf()函数中可以使用scanf()函数的格式控制符,还可以使用转义字符。

\n换行,将光标移到下一行
\t水平制表符
\r回车
\\反斜杠符(\)
\'单引号'
\''双引号
  
1.输入指定格式

  • 给出指定输出宽度:printf("%5d",num); (右对齐)预留5个宽度来输出一个整数。printf("%-5d",num);(左对齐)预留5个宽度来输出一个整数。
  • 对浮点数,输入指定小数点后几位:printf("%.5f",num1);输出小数点后五位数。printf("%5.2f",num2); 预留5个宽度来输出一个保留小数点后两位的浮点数。

说明:在c语言中不只scanf()和printf()函数用于输入输出,输入输出函数还有——getchar()和putchar();gets()和puts();


















在C语言中,`scanf` `printf` 是标准输入输出库函数中最常用的两个函数,它们用于格式输入输出数据,提供了灵活的控制方式以满足不同需求。 ### `printf` 的格式化输出 `printf` 函数允许按照指定的格式将数据输出到标准输出(通常是终端或控制台)。其基本语法如下: ```c int printf(const char *format, ...); ``` 其中 `format` 是一个字符串,包含普通字符格式说明符。格式说明符以 `%` 开头,后跟一个类型字符,例如 `%d` 表示整数,`%f` 表示浮点数,`%s` 表示字符串等。 #### 示例: ```c int num = 42; float fnum = 3.14159; char str[] = "Hello, World!"; printf("整数: %d\n", num); // 输出整数 printf("浮点数: %.2f\n", fnum); // 输出保留两位小数的浮点数 printf("字符串: %s\n", str); // 输出字符串 ``` `printf` 还支持一些特殊的格式化选项,如宽度指定、对齐方式、精度控制等。例如: ```c printf("%*d", 5, 10); // 输出宽度为5的整数,右对齐(默认),不足部分用空格填充 printf("%05d", 10); // 输出宽度为5的整数,不足部分用0填充 printf("%-5d", 10); // 输出宽度为5的整数,左对齐 ``` 此外,`printf` 也可以输出指针地址百分号字符: ```c printf("%p", &num); // 输出变量的地址 printf("%%"); // 输出一个百分号% ``` ### `scanf` 的格式输入 `scanf` 函数用于从标准输入读取格式化数据,并将其存储到指定的变量中。其基本语法如下: ```c int scanf(const char *format, ...); ``` 与 `printf` 类似,`scanf` 的 `format` 参数也包含普通字符格式说明符。格式说明符用于指定输入数据的类型格式。 #### 示例: ```c int a, b; float c; scanf("%d %d %f", &a, &b, &c); // 读取两个整数一个浮点数 ``` `scanf` 支持在格式字符串中包含普通字符,这些字符必须与输入严格匹配。例如: ```c scanf("%d,%d", &a, &b); // 输入必须是类似 "88,77" 或 "88, 77" 的格式 ``` 如果希望允许在分隔符前后有任意空白,则可以在格式字符串中加入空格: ```c scanf("%d ,%d", &a, &b); // 输入可以是 "88 , 77" 或 "88, 77" ``` ### 注意事项 - `scanf` 会自动跳过输入项前的空白字符(如空格、制表符、换行符等),除非格式说明符以 `%c` 或 `%[...]` 开头。 - 如果输入不符合预期格式,`scanf` 可能无法正确读取数据,并可能导致程序行为异常。 - 在使用 `scanf` 时,确保提供的变量地址正确,并且变量类型与格式说明符匹配。 - `scanf` 返回成功读取并赋值的输入项数量,可用于判断输入是否完整。 ### 示例代码 以下是一个完整的示例,展示了如何使用 `scanf` `printf` 进行格式输入输出: ```c #include <stdio.h> int main() { int age; float height; char name[100]; printf("请输入你的姓名: "); scanf("%s", name); // 读取字符串(遇到空格停止) printf("请输入你的年龄: "); scanf("%d", &age); // 读取整数 printf("请输入你的身高 (米): "); scanf("%f", &height); // 读取浮点数 // 输出格式化信息 printf("姓名: %s\n", name); printf("年龄: %d\n", age); printf("身高: %.2f 米\n", height); return 0; } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值