格式化输出%s和%S的区别

使用s时,printf是针对单字节字符的字符串,而wprintf是针对宽字符的

使用S时,正好相反,printf针对宽字符

CString中的format与printf类似,在unicode字符集的工程中,使用

CString str1, str2;

str1.format(_T("%S"), str2);时%S专指单字节字符的字符串,而str2为宽字符,类型不匹配,故出现不可预期的错误。

若str2为英文字符,如“abcd”,就只能输出a,因str2为宽字符,a有两个字节,值为0x0061,在内存中为61 00,故按单字节输出只能输出61,碰到00,即空字符后认为字符串结束,不会再输出。

若str2为中文字符,中文字符一般会占满两字节,而按单字节字符就会按一个字节一个字节的输出,故会输出乱码。

example:String Detail = SERVER_HOST + "detail?packageName=%s";

        String url = String.format(Api.Detail, packageName);

### C语言 `%s` 格式化输出用法 在C语言中,`%s` 是 `printf` 函数中的一个格式说明符,用于表示要输出的是一个字符串。当使用 `%s` 时,程序会读取并打印由该占位符指定的字符数组(即字符串),直到遇到第一个空字符 `\0`。 #### 输出简单字符串 最基础的方式是直接将一个字符串常量传递给 `printf` 函数: ```c #include <stdio.h> int main() { printf("%s\n", "这是一个简单的例子"); } ``` 这段代码将会显示:“这是一个简单的例子”。 #### 使用变量存储字符串 通常情况下,字符串会被存放在字符数组里,之后再通过指向此数组的名字作为实参传入到 `printf` 中去: ```c #include <stdio.h> int main() { char str[] = "这是来自字符数组的内容"; printf("%s\n", str); } ``` 这同样会在屏幕上显示出相应的文字信息。 #### 控制字段宽度 还可以利用修饰符来调整输出样式,比如设置最小字段宽度。如果实际长度小于设定值,则默认右侧填充空白;反之则按原样输出整个字符串而不做任何截断处理。 - 右对齐(默认行为) ```c #include <stdio.h> int main() { printf("|%-15s|\n", "短文本"); // 显示为:|短文本 | } ``` - 左对齐 ```c #include <stdio.h> int main() { printf("|%15s|\n", "短文本"); // 显示为:| 短文本| } ``` 对于超出预设宽度的情况,系统不会自动裁剪多余部分,而是完整呈现出来[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值