如何使用scanf读取以##分隔的两个浮点数输入?
使用scanf读取以##分隔的浮点数
要实现读取以##分隔的两个浮点数,核心是利用scanf的格式控制字符串直接匹配分隔符,具体实现如下:
代码示例
#include <stdio.h> int main() { double num1, num2; // 格式串中直接写入##,匹配输入里的分隔符 int read_count = scanf("%lf##%lf", &num1, &num2); if (read_count == 2) { double total = num1 + num2; // 按示例格式输出,保留5位小数 printf("%.5f + %.5f = %.5f\n", num1, num2, total); } else { printf("输入格式错误,请遵循「数字##数字」的格式\n"); } return 0; }
关键说明
%lf是scanf读取double类型浮点数的格式符(若使用float类型则替换为%f)- 格式串中的
##是固定匹配字符,scanf会自动识别输入中的连续两个#作为分隔符,精准提取前后的浮点数 - 检查scanf的返回值(
read_count)是否为2,确保成功读取两个有效浮点数,避免格式错误导致的异常
测试示例
输入:3.19990##9.99921
输出:3.19990 + 9.99921 = 13.19911
内容的提问来源于stack exchange,提问作者Ali Asadullah Shah
相关产品推荐
相关产品推荐

