0
点赞
收藏
分享

微信扫一扫

函数sscanf 和 snprintf

宁静的猫 2022-02-25 阅读 63

浅谈函数sscanf 和 snprintf

【每日一题】- leetcode 537. 复数乘法

  • 【思路】虚数构成:a+bi;利用sscanf函数读取实部a和虚部b;再利用snprintf函数将计算后的实部a和虚部b以【%d+%di】输入到字符串中
char * complexNumberMultiply(char * num1, char * num2){
    char *ans = (char*)malloc(sizeof(char)*20);
    int a , b , c, d;
    //读取实部和虚部
    sscanf(num1 , "%d+%di", &a , &b);
    sscanf(num2 , "%d+%di", &c , &d);
    int sum1 = a*c - b*d , sum2 = a*d + b*c;
    //输出实部和虚部
    snprintf(ans, 20 ,"%d+%di", sum1,sum2);
    return ans;
}
  • 浅谈函数sscanf
相同点不同点
scanfsscanf 与 scanf类似,都是用于输入的scanf 以屏幕(stdin)为输入源
sscanfsscanf 与 scanf类似,都是用于输入的sscanf 以目标字符串为输入源

【函数原型】: Int sscanf( string str, string fmt, mixed var1, mixed var2 … );
【使用方式】: snprintf( stdin , format , ans[ ]… , &b… );

stdin表示数据输入源
format读取方式可以是一个或多个符号
ans[ ]… , &b…读取数据后保存的方式
  • 浅谈函数snprintf
相同点不同点
printfprintf 与 snprintf类似,都是用于输出的printf 函数将数据打印到屏幕上
snprintfprintf 与 snprintf类似,都是用于输入的snprintf 函数将数据读取到目标位置

【函数原型】: int snprintf(char *restrict buf, size_t n, const char * restrict format, …);
【使用方式】: snprintf( buf , n , format , stdin );

buf表示数据保存的位置
format可以是一个或多个符号
stdin表示数据输入源

【注意】
(1) 如果格式化后的字符串长度 < n,则将此字符串全部复制到buf中,并给其后添加一个字符串结束符(’\0’);
(2) 如果格式化后的字符串长度 >= n,则只将其中的(n-1)个字符复制到buf中,并给其后添加一个字符串结束符(’\0’),不需要考虑溢出的问题,返回值为欲写入的字符串长度。

举报

相关推荐

0 条评论