【每日一题】- 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… );
浅谈函数snprintf 相同点 不同点 printfprintf 与 snprintf类似,都是用于输出的printf 函数将数据打印到屏幕上snprintfprintf 与 snprintf类似,都是用于输入的snprintf 函数将数据读取到目标位置
【函数原型】: int snprintf(char *restrict buf, size_t n, const char * restrict format, …);
【使用方式】: snprintf( buf , n , format , stdin );
【注意】
(1) 如果格式化后的字符串长度 < n,则将此字符串全部复制到buf中,并给其后添加一个字符串结束符(’’);
(2) 如果格式化后的字符串长度 >= n,则只将其中的(n-1)个字符复制到buf中,并给其后添加一个字符串结束符(’’),不需要考虑溢出的问题,返回值为欲写入的字符串长度。