sscanf用法

sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。

sscanf和scanf的区别:scanf是以键盘作为输入源,sscanf是以字符串作为输入源。

sscanf:

原型:

int sscanf(const char *str, const char *format,......);

说明:

sscanf()会将参数str的字符串根据参数format字符串来转换格式并格式化数据。转换后的结果存于对应的参数内。

成功则返回参数数目,失败则返回0

举例:

1. 取指定长度的字符串

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str[100];
  6. sscanf("12345","%4s",str);
  7. printf("%s\n",str);
  8. return 0;
  9. }
  10. 输出:1233

2. 读入字符串

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str[100];
  6. sscanf("12345","%s",str);
  7. printf("%s\n",str);
  8. return 0;
  9. }
  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str1[100], str2[100], str3[100];
  6. gets(str1);
  7. sscanf(str1,"%s%s",str2,str3);
  8. printf("%s %s\n",str2,str3);
  9. return 0;

10.}

3. %*d和%*s加了(*)表示跳过此数据不读入(也就是不把此数据读入参数中)

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str[100];
  6. sscanf("1234abcd","%*d%s",str);
  7. printf("%s\n",str);
  8. return 0;
  9. }

4.  取到指定字符为止的字符串。如例子所示,遇到‘+’为止的字符串。

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str[100];
  6. sscanf("1234+abc","%[^+]",str);
  7. printf("%s\n",str);
  8. return 0;
  9. }

遇到空格为止的字符串

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str[100];
  6. sscanf("1234+abc1234","%[^]",str);
  7. printf("str=%s\n",str);
  8. return 0;
  9. }

5. 取到指定字符集为止的字符串。如遇到小写字母为止的字符串。

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str[100];
  6. sscanf("1234+abc1234","%[^a-z]",str);
  7. printf("%s\n",str);
  8. return 0;
  9. }

6. 取仅包含指定字符集的字符串。(取仅包含数字和小写字母的字符串,是取得连续的字符串,貌似是到空格为止)。

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char str[100];
  6. sscanf("123456abcdefBFRGTY7890","%[1-9a-z]",str);
  7. printf("%s\n",str);
  8. return 0;
  9. }

原文地址:https://www.cnblogs.com/ziyuan122625/p/12000977.html

时间: 2024-10-17 19:03:34

sscanf用法的相关文章

C语言 sscanf用法详解

/* sscanf用法详解 */ #include <stdio.h> /* sscanf头文件 */ #include <stdlib.h> #include <string.h> /* sscanf 读取格式化的字符串中的数据. swscanf 是 sscanf 的宽字符版本:swscanf 的参数是宽字符串. swscanf不处理 Unicode 全角十六进制或"兼容性区"字符. 除此以外,swscanf 和 sscanf 的行为完全相同. 函

sscanf用法简析

1. 常见用法. char buf[512] = ; sscanf("123456 ", "%s", buf); printf("%s\n", buf); 结果为:123456 2. 取指定长度的字符串.如在下例中,取最大长度为4字节的字符串. sscanf("123456 ", "%4s", buf); printf("%s\n", buf); 结果为:1234 3. 取到指定字符为止

C语言sscanf用法解析与正则表达式支持

最近学习算法和输入输出用到的基本知识,首先是我自己写的一份代码参考和学习了很多资源 后面会给出参考资料,他们写得更加详细,正则表达式的支持确实是一大亮点所在 #include<iostream> #include<string> #include<cstdio> using namespace std; //字符与其他类型转换函数学习 int main() { //打印到字符串中 cout << "打印到字符串中的技巧\n"; char

C语言库函数篇1:sscanf用法

一.前言 本节,我们将学习C语言库函数sscanf()的使用,使用sscanf可以快速的从复杂字符串中获取自己需要的数据. 二.基础知识 1.简介 sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源. 2.函数描述 int sscanf(const char buffer, const char format, [argument]...); 参数:buffer:需要解析的源字符串format:窗体控件字符串,定义解析字符串的规则,可以是

sscanf()用法

http://blog.chinaunix.net/uid-26284412-id-3189214.html 1 #include<cstdio> 2 #include<cstring> 3 #include<string> 4 #include<iostream> 5 #include<algorithm> 6 using namespace std; 7 #define N 500 8 int main() 9 { 10 char s[] =

sscanf使用小记

sscanf介绍 在高级语言中比如Python,我们通常会用正则表达式(regex)处理复杂字符串, 比如校验手机号码格式的正确性,提取URL里面的一些关键信息. 在C语言中也有一个函数sscanf可以达到类似的功能,但是不及正则表达式灵活强大. sscanf用法 /* * \param str: 被解析的字符串 * \param format: 解析表达式 * \param __VA_ARGS__: 可变变量 * \return int: -1 参数格式错误 >=0 匹配的变量个数 */ in

HDOJ——2072单词数

SSCANF用法:(继qsort,bsearch,strchr后发现的又一好使的函数) sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源. 例子:   1. 常见用法. char buf[512] ; sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中! printf("%s\n", buf); 结果为:12

HDoj-2072-单词数

单词数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 29470    Accepted Submission(s): 7081 Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Inp

寒假CF1 C-龟龟

题意 :十进制转换为十六进制 学姐的代码------ #include<stdio.h> #include<string.h> #include<cctype> char a[100000]; void dfs(int x)//递归 { if(x<=0) return; x--; dfs(x/26); printf("%c",x%26+'A'); } int main() { int t; scanf("%d",&t