printf和scanf在c语言中的作用,C语言你不知道的scanf和printf

本文详细解析了C语言中printf和scanf函数的使用方法及返回值含义,包括字符串长度计算、格式化输出、数据读取等内容,并介绍了如何利用sscanf从字符串中提取特定数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

给大家分享一下几个你可能不知道的小东东

一、 scanf printf返回值

example1

int num = printf("1234");

printf("\n num = %d\n", num);

return 0;

结果:

1234

num = 4

analyze:

纯字符串情况下 返回值是字符个数。

example2

int num = printf("a=%2d,b=%d", 1000, 20);

printf("\n num = %d\n", num);

结果:

a=1000,b=20

num = 11

analyze:

返回值是格式转换后输出字符串长度。

example3

int a;

int b;

int num = scanf("%d%d", &a, &b);

printf("%d\n", num);

结果:

2

analyze:

scanf的返回值是成功输入数据的个数。

总结:printf的返回值是打印字符串的长度, scanf的返回值是成功输入数据到变量中的个数。

二、 scanf 正则表达式

example1

char str[100] = {0};

scanf("%s", str);

printf("%s\n", str);

analyze:

空格和回车都是结束标志。

比如123空格符123 结果输出:123

比如123回车 结果输出:123

example2

char str[100] = {0};

scanf("%[^=]", str);

printf("%s\n", str);

输出结果:

123=5678=123回车

123

analyze:

输入结束标志, 可以使用自己喜欢的符号, 不一定是=号, 读入的时候只读入结束标志之前的。

example3

char str[100] = {0};

scanf("%[1]", str);

printf("%s\n", str);

输出结果:

输入 11111121

111111

analyze:

读取开头的1, 只要不是1就结束读取。

那如果只需要0-9呢? 只需要改一下表达式

example4

char str[100] = {0};

scanf("%[0-9]", str);

printf("%s\n", str);

输出结果:

输入 12345a123

12345

同理a-z 和 A-Z表示此范围的字符

当然也有组合比如a-zA-Z 0-9a-zA-Z 取反^表示遇到这些字符不在读取.

总结:%[=] 表示只读取=遇到不是等不再把后边的数据读入变量。反之^=, 表示遇到第一个=, 不在把后边数据读入变量。

三、 sscanf

example1

char *str = "25 Female iPhone 175";

//25is age, 175 is height

//抽取字符串中的25和175数据

int age, height;

sscanf(str, "%d %*s %*s %d", &age, &height);

printf("age = %d height = %d\n", age, height);

打印:

age = 25 height = 175

按照响应的格式对应, 如果想要某一个数据,就不用加%s, 通过这样的处理, 可以获取字符串中想要的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值