鱼C论坛

 找回密码
 立即注册
查看: 2582|回复: 6

[已解决]C语言对字符串的方法中有没有类似于python中的rjust方法

[复制链接]
发表于 2022-9-24 10:12:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题
最佳答案
2022-9-24 11:54:20
没见过这个函数,如果没有的话,那就自己写一个
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. char *rjust(const char *str, size_t width, char ch) {
  5.     size_t len = strlen(str);
  6.     if(len >= width) return strdup(str);
  7.     char *result = malloc(width + 1);
  8.     char *p = result;
  9.     size_t count = width - len;
  10.     while(count--) *p++ = ch;
  11.     for(size_t i = 0; str[i]; ++i) {
  12.         *p++ = str[i];
  13.     }
  14.     *p = '\0';
  15.     return result;
  16. }

  17. int main(void) {
  18.     {
  19.         char *s = rjust("123", 5, '0');
  20.         puts(s);
  21.         free(s);
  22.     }
  23.     {
  24.         char *s = rjust("123", 3, '0');
  25.         puts(s);
  26.         free(s);
  27.     }
  28.     {
  29.         char *s = rjust("123", 2, '0');
  30.         puts(s);
  31.         free(s);
  32.     }
  33.     {
  34.         char *s = rjust("123", 10, '0');
  35.         puts(s);
  36.         free(s);
  37.     }
  38.     return 0;
  39. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-24 11:54:20 | 显示全部楼层    本楼为最佳答案   
没见过这个函数,如果没有的话,那就自己写一个
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. char *rjust(const char *str, size_t width, char ch) {
  5.     size_t len = strlen(str);
  6.     if(len >= width) return strdup(str);
  7.     char *result = malloc(width + 1);
  8.     char *p = result;
  9.     size_t count = width - len;
  10.     while(count--) *p++ = ch;
  11.     for(size_t i = 0; str[i]; ++i) {
  12.         *p++ = str[i];
  13.     }
  14.     *p = '\0';
  15.     return result;
  16. }

  17. int main(void) {
  18.     {
  19.         char *s = rjust("123", 5, '0');
  20.         puts(s);
  21.         free(s);
  22.     }
  23.     {
  24.         char *s = rjust("123", 3, '0');
  25.         puts(s);
  26.         free(s);
  27.     }
  28.     {
  29.         char *s = rjust("123", 2, '0');
  30.         puts(s);
  31.         free(s);
  32.     }
  33.     {
  34.         char *s = rjust("123", 10, '0');
  35.         puts(s);
  36.         free(s);
  37.     }
  38.     return 0;
  39. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 13:36:54 | 显示全部楼层
如什么题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-24 13:55:20 | 显示全部楼层

如标题哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-24 14:03:44 | 显示全部楼层
人造人 发表于 2022-9-24 11:54
没见过这个函数,如果没有的话,那就自己写一个

啊那如果要重新定义而且那么长的话有点不太合理诶我那道题是说输入n然后输出斐波那契数列的前n个,而且必须遵循一个数字是右对齐,占8个位置的,且需要8个数字为一排。这样做感觉代码会很多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 14:13:23 | 显示全部楼层
fightclub 发表于 2022-9-24 14:03
啊那如果要重新定义而且那么长的话有点不太合理诶我那道题是说输入n然后输出斐波那契数列的前n ...

编程语言越高级,基本上代码量就越少,你要追求代码量的话,去用高级语言
如果你追求代码运行速度,那就选C语言或者汇编语言
如果你还要求存储空间占用的话,那就选汇编语言
看你追求什么,就用对应的工具
我主修的C/C++,但是要写爬虫,我肯定不用C/C++,我会用python写爬虫
不要用java写操作系统,也不要用汇编语言做语音识别
就是这样,用合适的工具去完成你的工作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-24 16:42:19 | 显示全部楼层
人造人 发表于 2022-9-24 14:13
编程语言越高级,基本上代码量就越少,你要追求代码量的话,去用高级语言
如果你追求代码运行速度,那就 ...

Okok,主要是这是老师的作业,我大一的,那么长不太合适哈哈哈,那就只能这样咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 07:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表