sscanf与sprintf

来源:互联网 发布:淘宝客qq群推广技巧 编辑:程序博客网 时间:2024/05/22 10:41

看到sscanf与sprintf,大家一定会联想他们与scanf、printf的关系。
下面就介绍一下sscanf与sprintf函数:
sscanf:

int sscanf(   const char *buffer,   const char *format [,      argument ] ... );

sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。举几个例子来说明sscanf函数的用法:
1.

    char buf[512];    sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!    printf("%s\n", buf);   //123456

2.

     sscanf("123456 ", "%4s", buf);//取4个字符串存入buf中    printf("%s\n", buf);   //1234

3.

    char buf[128];    sscanf("123456 abcdedf", "%[^5]", buf);   //匹配到5以前的字符     printf("%s\n", buf);    //1234

4.

    char buf[128];    sscanf("123456abcdedfBCDEF", "%[1-9a-f]", buf);   //取在1-9中的数字和a-f的字母,如果取的是1-5中的数字,那么取到最后一个数字就会停止,不会继续往后走。    printf("%s\n", buf);   //123456abcdef

sprintf

   int sprintf(   char *buffer,   const char *format [,      argument] ... );

和sscanf的功能相对应,sprintf的功能是把格式化的数据写入某个字符串中。举个例子:

    char s[64];    sprintf(s, "%d", 123);    //将整数123 打印成一个字符串保存在s中    printf("%s", s);

上一个完整的例子:
  产生10 个[0, 100)之间的随机数,并将他们打印到一个字符数组s 中,以逗号分隔开。

#include <stdio.h>#include<Windows.h>#include <stdlib.h> #include <time.h> #pragma warning(disable:4996)int main() {    srand(time(0));    char s[64];    int offset = 0;    for (int i = 0; i < 10; i++) {        offset += sprintf(s + offset, "%d,", rand() % 100);    }    s[offset - 1] = '\n';//将最后一个逗号换成换行符。    printf(s);    system("pause");    return 0;}
原创粉丝点击