字符串输入函数scanf( )与sscanf( )的区别

scanf()用法:

[]内是匹配的字符,^表示求反集,当遇到非集合内的字符时立即终止输入。


//输入不包括指定字符的字符 scanf("%[^a-z]", str1);

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

输入:123 456abc123

输出:123 456

注意:这种方式可以读入空格


//输入指定范围的小写字母,遇到非法字符立 即终止

scanf("%[a-z]",str1); printf("%s\n",str1);

输入:abc123

输出:abc


//输入带空格的自定范围的字符串

scanf("%[a-z A-Z0-9]", str1);

printf("%s\n",st

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: scanf和sscanf都是C语言中的输入函数,它们的主要区别在于数据的来源和解析方式。 scanf函数从标准输入设备(如键盘)读取数据并解析,而sscanf函数从一个字符串中读取数据并解析。 具体来说,scanf函数使用的格式控制字符串中包含的格式化字符可以与标准输入设备中输入的数据进行匹配,例如: ```c int num; scanf("%d", &num); ``` 这段代码从标准输入设备中读取一个整数,并将其存储在num变量中。 而sscanf函数使用的格式控制字符串与一个字符串进行匹配,例如: ```c char str[] = "hello 123 world"; int num; sscanf(str, "%*s %d", &num); ``` 这段代码从字符串str中读取一个整数,并将其存储在num变量中。注意,%*s表示忽略一个字符串,即忽略字符串"hello"。 因此,scanf和sscanf区别在于数据的来源和解析方式。scanf从标准输入设备中读取数据并解析,而sscanf从一个字符串中读取数据并解析。 ### 回答2: scanf和sscanf是C语言中常用的输入函数,两者的主要区别如下: 1. 用途不同: - scanf用于从标准输入(键盘)读取输入数据。 - sscanf用于从字符串中读取数据。 2. 参数不同: - scanf的参数为格式控制字符串和其他变量的地址(指针)。 - sscanf的参数为格式控制字符串、字符串指针和其他变量的地址(指针)。 3. 返回值不同: - scanf的返回值为成功读取的变量数,即成功匹配并读取的参数个数。 - sscanf的返回值为成功匹配和读取的参数个数。 4. 输入源不同: - scanf从标准输入中读取数据,即需要用户手动输入。 - sscanf从字符串中读取数据,即提前将需要解析的数据存储在字符串中。 5. 使用场景不同: - scanf常用于从键盘获取输入,用于实时交互的输入场景。 - sscanf常用于字符串解析,用于对存储在字符串中的数据进行处理和提取。 综上所述,scanf和sscanf在用途、参数、返回值、输入源和使用场景等方面存在明显的区别。开发者需要根据实际需求选择适合的函数进行数据输入操作。 ### 回答3: scanf和sscanf是C语言中用于输入的函数scanf函数是标准输入函数,用于从标准输入设备(一般是键盘)读取数据。它可以按照特定的格式读取用户输入,并将数据存储在相应的变量中。例如,通过scanf可以读取用户输入的整数、浮点数、字符等。scanf函数的格式控制字符串中使用的格式化符号和printf函数相同。 sscanf函数字符串输入函数,用于从字符串中读取数据。它可以按照特定的格式从一个给定的字符串中提取数据,并将数据存储在相应的变量中。与scanf函数类似,sscanf函数的格式控制字符串中使用的格式化符号和printf函数相同。不同的是,sscanf从字符串中读取数据,而不是从标准输入设备。 scanf和sscanf的主要区别在于数据读取的来源不同。scanf从标准输入设备(一般是键盘)读取数据,而sscanf从一个给定的字符串中读取数据。这意味着使用scanf时,用户需要手动输入数据,而使用sscanf时,数据已经提前存储在字符串中。 另一个区别scanf函数返回成功读取的数据个数,而sscanf函数返回成功匹配的数据个数。这可以用于判断读取结果是否符合预期。 总结来说,scanf和sscanf在用法上基本相同,只是数据来源不同。可以根据具体需求选择使用哪个函数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值