sprintf在处理字符串中的作用

 对于熟悉C的人来说,sprintf并不陌生,在很多情况下,一般都会使用sprintf来代替itoa.sprintf函数的原型是:
int sprintf(char* str, const char* format, ...);
    除了前两个参数类型固定外,后面可以接任意多个参数,格式化输出一个字符串:
1) 整数格式化输出
    如果要将数字 3915 保存到字符串str中/*假定字符串够长,以下都是为这样*/.
    sprintf(str,"%d",3915); // "3915"  这是最基本的输出
    sprintf(str,"%5d",3915); // " 3915" 右对齐,相当于C++中的制表符,如数字没有5位时左另用空格补满.
    sprintf(str,"%05d",3915); // "03915"右对齐,相当于C++中的制表符,如数字没有5位时左另用'0'补满
    sprintf(str,"%3d",3915); // "3915", 如果数字长度超出时,输出完整的数字
    sprintf(str,"%-5d",3915); // "3915 " 左对齐,如数字没有5位时左另用空格补满,超出时输出所有数字
    对于十六进制也类同于十进制
    sprintf(s, "%5x", 3915);  // "  f4b"右对齐,小写16 进制,宽度占5 个位置
    sprintf(s, "%5X", 3915);  // "  F4B"右对齐,大写16 进制,宽度占5 个位置

2) 浮点数格式化输出
    如果要将浮点数字 3.915 保存到字符串str中
    sprintf(str,"%f",3.915); // "3.915" 这是最基本的输出,显示完整的数字
    sprintf(str,"%.2f",3.915); // "3.92" 保留二位小数,注意的一点是,这里是四舍五入,面不是像取整那样丢掉小数位.但还存在一个问题,就是当前面的整数部分数据大时,也有可能直接丢掉后面位.
    
对于数字转字符串还有一个要注意的问题,就是后面数字的类型不一值的时候就可能得不到你想要的结果,需要强制转换一下,如:
    int ii = 3915;
    sprintf(str,"%f",ii); // 这样你就会遇到传闻中的R6002,float point not load 的错误,我在VS中写C++命令行程序,直接一闪而过,断点之类的都没用.可以改成:
    sprintf(str,"%f",(float)ii); // 这样就正常以浮点输出了   

3) 字符串的格式化输出
    如果要将字符串"guoke"保存到字符串str中
    sprintf(str,"%s","guoke"); // "guoke"最基本的,直接copy
    sprintf(str,"%6s","guoke"); // " guoke" 右对齐,超出时,输出全部字符串
    sprintf(str,"%.3s","guoke"); // " guo"   只读取字前三个字符,如果字符串不足3个取全部
    sprintf(str,"%-6s","guoke"); //  "guoke " 左对齐,超出时,输出全部字符串
     sprintf(str,"%6.3s","guoke"); // "   guo" 右对齐,宽宽6,只取字符串前3个字符.如果字符串不足3个取全部
    sprintf(str,"%-6.3s","guoke"); // "guo   " 左对齐,宽宽6,只取字符串前3个字符.如果字符串不足3个取全部
    sprintf(str,"%3.6s","guoke"); // "guoke" 这样感觉好像没什么大的作用,当所取的字符串长度大于3是还是会输出全部字符串的.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sprintf函数可以用于将格式化数据写入字符数组或字符串,然后根据需要打印或存储该字符串。对于输入带有空格的字符串,可以使用sprintf函数来处理。首先,需要定义一个字符数组或字符串来存储输入的字符串。然后,使用sprintf函数将输入的字符串格式化并存储到该字符数组或字符串。请注意,sprintf函数在处理带有空格的字符串时需要特殊处理,可以使用转义字符来表示空格。例如,如果要输入字符串"There is a cat.",可以使用以下代码: ```c++ char str\[20\]; sprintf(str, "There\\ is\\ a\\ cat."); ``` 在上述代码,我们使用转义字符"\"来表示空格,然后将格式化后的字符串存储到字符数组str。最后,可以使用printf函数来打印该字符串。 ```c++ printf("%s", str); ``` 这样就可以正确处理带有空格的字符串了。 #### 引用[.reference_title] - *1* *3* [关于对字符串、数组处理的常见问题与方法,如获带有空格字符串长度,数组长度等。getline(),sprintf()...](https://blog.csdn.net/qq_39039017/article/details/79699373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C语言_sprintf固定字符串输出位数](https://blog.csdn.net/xiaolong1126626497/article/details/129580998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值