Error[8]: Undefined offset: 5, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在尝试使用宽度说明符和printf函数格式化c中某些字符串的输出.但是我无法获得我想要的行为.似乎每次printf遇到字符å,ä或ö时,为字符串保留的宽度会缩小一个位置. 代码片段说明: #include <stdio.h>int main(void){ printf(">%-10s<\n", "aoa"); printf(">%-10s<\n", "aäoa"); prin 我正在尝试使用宽度说明符和printf函数格式化c中某些字符串的输出.但是我无法获得我想要的行为.似乎每次printf遇到字符å,ä或ö时,为字符串保留的宽度会缩小一个位置.

代码片段说明:

#include <stdio.h>int main(voID){  printf(">%-10s<\n","aoa");  printf(">%-10s<\n","aäoa");  printf(">%-10s<\n","aäoöa");  printf(">%-10s<\n","aäoöaå");  return 0;}

在我的ubuntu linux bash-shell中输出.

>aoa       <>aäoa     <>aäoöa   <>aäoöaå <

我正在寻找有关如何处理这个问题的建议.我想要的是上面代码片段中的所有字符串都在空格填充的10字符宽字段中打印,如下所示:

>aoa       <>aäoa      <>aäoöa     <>aäoöaå    <

如果这不是其他设置的问题,我也很感激有关为什么会发生这种情况或反馈的任何见解.

解决方法 为什么会这样?

看看The Absolute Minimum Every Software Developer Absolutely,Positively Must Know About Unicode and Character Sets

作为宽字符和UTF8的替代方法,您可以使用此函数计算非ASCII字符的数量,然后,您可以将结果添加到printf的宽度说明符:

#include <stdio.h>int func(const char *str){    int len = 0;    while (*str != '
>aoa       <>aäoa      <>aäoöa     <>aäoöaå    <
') { if ((*str & 0xc0) == 0x80) { len++; } str++; } return len;}int main(voID){ printf(">%-*s<\n",10 + func("aoa"),"aoa"); printf(">%-*s<\n",10 + func("aäoa"),"aäoa"); printf(">%-*s<\n",10 + func("aäoöa"),"aäoöa"); printf(">%-*s<\n",10 + func("aäoöaå"),"aäoöaå"); return 0;}

输出:

[+++] 总结

以上是内存溢出为你收集整理的printf中的宽度说明符与重音字符无法正常工作全部内容,希望文章能够帮你解决printf中的宽度说明符与重音字符无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
printf中的宽度说明符与重音字符无法正常工作_C_内存溢出

printf中的宽度说明符与重音字符无法正常工作

printf中的宽度说明符与重音字符无法正常工作,第1张

概述我正在尝试使用宽度说明符和printf函数格式化c中某些字符串的输出.但是我无法获得我想要的行为.似乎每次printf遇到字符å,ä或ö时,为字符串保留的宽度会缩小一个位置. 代码片段说明: #include <stdio.h>int main(void){ printf(">%-10s<\n", "aoa"); printf(">%-10s<\n", "aäoa"); prin 我正在尝试使用宽度说明符和printf函数格式化c中某些字符串的输出.但是我无法获得我想要的行为.似乎每次printf遇到字符å,ä或ö时,为字符串保留的宽度会缩小一个位置.

代码片段说明:

#include <stdio.h>int main(voID){  printf(">%-10s<\n","aoa");  printf(">%-10s<\n","aäoa");  printf(">%-10s<\n","aäoöa");  printf(">%-10s<\n","aäoöaå");  return 0;}

在我的ubuntu linux bash-shell中输出.

>aoa       <>aäoa     <>aäoöa   <>aäoöaå <

我正在寻找有关如何处理这个问题的建议.我想要的是上面代码片段中的所有字符串都在空格填充的10字符宽字段中打印,如下所示:

>aoa       <>aäoa      <>aäoöa     <>aäoöaå    <

如果这不是其他设置的问题,我也很感激有关为什么会发生这种情况或反馈的任何见解.

解决方法 为什么会这样?

看看The Absolute Minimum Every Software Developer Absolutely,Positively Must Know About Unicode and Character Sets

作为宽字符和UTF8的替代方法,您可以使用此函数计算非ASCII字符的数量,然后,您可以将结果添加到printf的宽度说明符:

#include <stdio.h>int func(const char *str){    int len = 0;    while (*str != '
>aoa       <>aäoa      <>aäoöa     <>aäoöaå    <
') { if ((*str & 0xc0) == 0x80) { len++; } str++; } return len;}int main(voID){ printf(">%-*s<\n",10 + func("aoa"),"aoa"); printf(">%-*s<\n",10 + func("aäoa"),"aäoa"); printf(">%-*s<\n",10 + func("aäoöa"),"aäoöa"); printf(">%-*s<\n",10 + func("aäoöaå"),"aäoöaå"); return 0;}

输出:

总结

以上是内存溢出为你收集整理的printf中的宽度说明符与重音字符无法正常工作全部内容,希望文章能够帮你解决printf中的宽度说明符与重音字符无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存