sscanf sprintf sstream

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4
  5 static void sscanf_test(void);
  6
  7 static void sscanf_test(void)
  8 {
  9     int ret;
 10     char *string;
 11     int  digit;
 12     char buf1[255];
 13     char buf2[255];
 14     char buf3[255];
 15     char buf4[255];
 16
 17     /*1.最简单的用法*/
 18     string = "china beijing 123";
 19     ret = sscanf(string, "%s %s %d", buf1, buf2, &digit);
 20     printf("1.string=%s\n", string);
 21     printf("1.ret=%d, buf1=%s, buf2=%s, digit=%d\n\n", ret, buf1, buf2, digit);
 22     /*
 23     **执行结果:
 24     **1.ret=3, buf1=china, buf2=beijing, digit=123
 25     **可以看出,sscanf的返回值是读取的参数个数
 26     */
 27
 28     /*2.取指定长度的字符串*/
 29     string = "123456789";
 30     sscanf(string, "%5s", buf1);
 31     printf("2.string=%s\n", string);
 32     printf("2.buf1=%s\n\n", buf1);
 33     /*
 34     **执行结果:
 35     **2.buf1=12345
 36     */
 37
 38     /*3.取到指定字符为止的字符串*/
 39     string = "123/456";
 40     sscanf(string, "%[^/]", buf1);
 41     printf("3.string=%s\n", string);
 42     printf("3.buf1=%s\n\n", buf1);
 43     /*
 44     **执行结果:
 45     **3.buf1=123
 46     */
 47
 48     /*4.取到指定字符集为止的字符串*/
 49     string = "123abcABC";
 50     sscanf(string, "%[^A-Z]", buf1);
 51     printf("4.string=%s\n", string);
 52     printf("4.buf1=%s\n\n", buf1);
 53     /*
 54     **执行结果:
 55     **4.buf1=123abc
 56     */
 57
 58     /*5.取仅包含指定字符集的字符串*/
 59     string = "0123abcABC";
 60     sscanf(string, "%[0-9]%[a-z]%[A-Z]", buf1, buf2, buf3);
 61     printf("5.string=%s\n", string);
 62     printf("5.buf1=%s, buf2=%s, buf3=%s\n\n", buf1, buf2, buf3);
 63     /*
 64     **执行结果:
 65     **5.buf1=123, buf2=abc, buf3=ABC
 66     */
 67
 68     /*6.获取指定字符中间的字符串*/
 69     string = "ios<android>wp7";
 70     sscanf(string, "%*[^<]<%[^>]", buf1);
 71     printf("6.string=%s\n", string);
 72     printf("6.buf1=%s\n\n", buf1);
 73     /*
 74     **执行结果:
 75     **6.buf1=android
 76     */
 77
 78     /*7.指定要跳过的字符串*/
 79     string = "iosVSandroid";
 80     sscanf(string, "%[a-z]VS%[a-z]", buf1, buf2);
 81     printf("7.string=%s\n", string);
 82     printf("7.buf1=%s, buf2=%s\n\n", buf1, buf2);
 83     /*
 84     **执行结果:
 85     **7.buf1=ios, buf2=android
 86     */
 87
 88     /*8.分割以某字符隔开的字符串*/
 89     string = "android-iphone-wp7";
 90     /*
 91     **字符串取道‘-‘为止,后面还需要跟着分隔符‘-‘,
 92     **起到过滤作用,有点类似于第7点
 93     */
 94     sscanf(string, "%[^-]-%[^-]-%[^-]", buf1, buf2, buf3);
 95     printf("8.string=%s\n", string);
 96     printf("8.buf1=%s, buf2=%s, buf3=%s\n\n", buf1, buf2, buf3);
 97     /*
 98     **执行结果:
 99     **8.buf1=android, buf2=iphone, buf3=wp7
100     */
101
102     /*9.提取邮箱地址*/
103     string = "Email:[email protected]";
104     sscanf(string, "%[^:]:%[^@]@%[^.].%s", buf1, buf2, buf3, buf4);
105     printf("9.string=%s\n", string);
106     printf("9.buf1=%s, buf2=%s, buf3=%s, buf4=%s\n\n", buf1, buf2, buf3, buf4);
107     /*
108     **执行结果:
109     **9.buf1=Email, buf2=beijing, buf3=sina, buf4=com.cn
110     */
111
112     /*10.过滤掉不想截取或不需要的字符串--补充,
113     **在%号后面加一*号,代表过滤这个字符串,不读取
114     */
115     string = "android iphone wp7";
116     sscanf(string, "%s %*s %s", buf1, buf2);
117     printf("10.string=%s\n", string);
118     printf("10.buf1=%s, buf2=%s\n\n", buf1, buf2);
119     /*
120     **执行结果:
121     **10.android wp7
122     */
123 }
124
125 int main(int argc, char **argv)
126 {
127     sscanf_test();
128
129     return 0;
130 }  

sprintf功能也很强   是把数据写进字符串里面   不多赘述

sstream是C++才有的

用流处理  也非常强大

不过鉴于不准备以后继续学习C++了

实在太浪费时间还难找工作

下段时间主要就注重算法

开始学习java 和 python

时间: 2024-12-29 07:32:49

sscanf sprintf sstream的相关文章

STL :sscanf sprintf的应用

PAT 1054 网上看到的,很好的应用了这两个函数. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include <bits/stdc++.h> using namespace std; int main() {     int n, cnt = 0;     char a[50], b[50];     double temp, sum = 0.0

sscanf,sprintf用法

#include<string.h> #include<stdio.h> int main() { char buf[512],sztime1[16],sztime2[16]; sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中! printf("%s\n", buf); sscanf("123456 ", "%4

C++STL 常用 函数 用法

学完c++快一年了,感觉很有遗憾,因为一直没有感觉到c++的强大之处,当时最大的感觉就是这个东西的输入输出比C语言要简单好写. 后来我发现了qt,opencv,opengl,原来,c++好玩的狠. 在这些图形库之外,最常用的可能就是STL,这个东西由于当时学c++的时候迷迷糊糊,完全是一头雾水,上学期数据结构之后开始有点儿开窍了,现在把才c++STL中常用的函数,用法贴一下,也是记录一下,希望能给一样迷糊的盆友们一些帮助. 整理自<ACM程序设计> 迭代器(iterator) 个人理解就是把所

c++常用函数STL

完c++快一年了,感觉很有遗憾,因为一直没有感觉到c++的强大之处,当时最大的感觉就是这个东西的输入输出比C语言要简单好写. 后来我发现了qt,opencv,opengl,原来,c++好玩的狠. 在这些图形库之外,最常用的可能就是STL,这个东西由于当时学c++的时候迷迷糊糊,完全是一头雾水,上学期数据结构之后开始有点儿开窍了,现在把才c++STL中常用的函数,用法贴一下,也是记录一下,希望能给一样迷糊的盆友们一些帮助. 整理自<ACM程序设计> 迭代器(iterator) 个人理解就是把所有

C++STL库常用函数用法

开学就要上OOP了.....感觉十分萌萌哒- -! 整理自<ACM程序设计>,本文为转载(原文地址) 迭代器(iterator) 个人理解就是把所有和迭代有关的东西给抽象出来的,不管是数组的下标,指针,for里面的.list里面的.vector里面的,抽象一下变成了iterator 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8 vector&

C++STL 常用 函数 用法(转)

http://www.cnblogs.com/duoduo369/archive/2012/04/12/2439118.html 迭代器(iterator) 个人理解就是把所有和迭代有关的东西给抽象出来的,不管是数组的下标,指针,for里面的.list里面的.vector里面的,抽象一下变成了iterator 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int main() 7 { 8

C++的STL总结(1)

没有很系统的学过算法,c++也只是学些基础,虽然经常会用一些STL里面的函数,但是并没有对STL模板库有一个清晰的了解,趁着寒假有时间就自己在网上百度浏览别人的总结的内容,自己汇集并总结了一下,希望对自己以后的路能有所帮助. 一:STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在惠普实验室工作时所开发出来的.现在虽说它主要出现在C++中

C语言--&gt;(十三)字符串

知识点: 1.字符和字符处理函数 2.字符串的本质和字符串输入输出函数 3.字符串转换函数 4.常用字符串处理函数 5.字符串查找函数 6.字符串分割函数 7.字符串替换 8.常用字符串处理函数实现 9.sscanf sprintf函数 ================================C中必须先定义类型后使用,没有字符串类型,字符串用一串字符,基本元素是字符 “xiaoqiang\0” 字符和字符处理1常用字符 数字字符: ‘0’ ‘1’ — ‘9’字母字符:’M’ ‘F’ ‘a

IOS-C_Day11___字符串

2015.2.2 #include <stdio.h> #include <ctype.h> //字符操作的函数 //int     isalnum(int); //int     isalpha(int); //int     isdigit(int); //int     isgraph(int); //int     islower(int); //int     ispunct(int); //int     isspace(int);//判断是否为空格 //int