C++输入与输出(1)

格式化字符串输入—— sscanf

该函数包含在 <cstdio> 库中。

  1. 常见用法,将字符串以字符串的形式存储在 buf 中。
  char buf[512];
  sscanf("123456","%s",buf);
  printf("%s\n",buf);

结果为: 123456

  1. 将字符串以整形的形式存储在 buf 中。
    sscanf("123456","%d",buf);
    printf("%d\n",buf);

结果为: 123456

  1. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
  sscanf("123456","%4s",buf);
  printf("%s\n",buf);

结果为: 1234

  1. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
  sscanf("123456 abcdedf","%[^ ]", buf);
  printf("%s\n",buf);

结果为: 123456

  1. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
  sscanf("123456abcdedfBCDEF","%[1-9a-z]",buf);
  printf("%s\n",buf);

结果为: 123456abcdedf

  1. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
  sscanf("123456abcdedfBCDEF","%[^A-Z]",buf);
  printf("%s\n",buf);

结果为: 123456abcdedf

  1. 给定一个字符串 iios/12DDWDFF@122 ,获取 /@ 之间的字符串,先将 iios/ 过滤掉,再将非 @ 的一串内容送到 buf
  sscanf("iios/12DDWDFF@122","%*[^/]/%[^@]",buf);
  printf("%s\n",buf);

结果为: 12DDWDFF

  1. 给定一个字符串 hello, world ,仅保留 world 。(注意: , 之后有一空格)
  sscanf(“hello, world”,"%*s%s",buf);
  printf("%s\n",buf);

结果为: world

格式化字符串输出—— sprintf

该函数包含在 <cstdio> 库中。

  1. 常见用法,把一个整数打印成一个字符串保存在 buf 中。
    sprintf(buf,"%d",123);
    printf("%s",s);

结果为: 123

  1. 可以同时将多个整数连续打印成字符串保存在 buf 中。
    sprintf(buf,"%d+%d",123,123);
    printf("%s",s);

结果为: 123+123

  1. 把整数打印成字符串保存在 buf 中,并指定宽度、左对齐、右对齐,不足位补空格。
    sprintf(buf,"%8d-8d%d",12345,123,1);
    printf("%s",s);

结果为: 12345123 1 (第一个右对齐,第二个左对齐,第三个正常输出)

  1. 将一个整数按照16进制(或者其他进制)打印成字符串保存在 buf 中,同时可以补零。
    sprintf(buf,"%x %X %04x",123,123);
    printf("%s",s);

结果为: 7b 7B 007b

  1. 将一个浮点数打印成字符串保存在 buf 中,并控制精度。
    sprintf(buf,"%.4lf",3.1415926);
    printf("%s",s);

结果为: 3.1416

  1. 连接字符串并打印成字符串保存在 buf 中。
    sprintf(buf,"%s %s","LaoguanTX","NB");
    printf("%s",s);

结果为: LaoguanTX NB

例题

来源:洛谷 P1957 口算练习题

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,num1,num2;
char s[10001],a;
int main(){
    scanf("%d",&n);
    while(n--){
        scanf("%s",s);
        if(s[0]<'0'||s[0]>'9'){
            a=s[0];
            scanf("%d",&num1);
            scanf("%d",&num2);
        }else{
            sscanf(s,"%d",&num1);
            scanf("%d",&num2);
        }
        memset(s,0,sizeof(s));
        if(a=='a'){
            sprintf(s,"%d+%d=%d",num1,num2,num1+num2);
        }
        if(a=='b'){
            sprintf(s,"%d-%d=%d",num1,num2,num1-num2);
        }
        if(a=='c'){
            sprintf(s,"%d*%d=%d",num1,num2,num1*num2);
        }
        printf("%s\n%d\n",s,strlen(s));
    }
    return 0;
}
文章标题:C++输入与输出(1)
文章链接:https://www.laoguantx.top/c%e8%be%93%e5%85%a5%e4%b8%8e%e8%be%93%e5%87%ba%ef%bc%881%ef%bc%89.html
文章内容仅供参考,其中可能会有部分内容参考、引用其他网站,转发请务必标注作者为 “老官童鞋gogo” ,原文链接为 https://www.laoguantx.top/c%e8%be%93%e5%85%a5%e4%b8%8e%e8%be%93%e5%87%ba%ef%bc%881%ef%bc%89.html 。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇