免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3500 | 回复: 15
打印 上一主题 下一主题

不得不问了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-11 09:06 |只看该作者 |倒序浏览
5可用积分
我有一个字符串,但是长度不够,我想补几个空格到尾部使其满足规定的长度,但是我这个字符串尾部是"\n"的,所以不能补在"\n"后面,想在它前面补,strcat就不行了,有啥办法呀?? 谢谢了

最佳答案

查看完整内容

1、先初始化2、算出尾部\n的个数3、strncpy尾部\n之前的字符串4、再strncpy\n的个数如需要的字符串长度为16现有字符串char *a="abcd\n\n\n",那么假设存放在char str[17];1、memset(str, ' ', 16);str[16] = '\0';2、尾部\n的个数为33、strncpy(str, a, strlen(a) - 3);4、strncpy(&str, a + strlen(a) - 3, 3);#define NEED_BYTES 16int main(int argc, char **argv){ const char *a="abcd\n\n\n"; char str[NEED_BYTES + 1]; i ...

论坛徽章:
0
2 [报告]
发表于 2008-06-11 09:06 |只看该作者
1、先初始化
2、算出尾部\n的个数
3、strncpy尾部\n之前的字符串
4、再strncpy\n的个数

如需要的字符串长度为16
现有字符串char *a="abcd\n\n\n",那么假设存放在char str[17];
1、memset(str, ' ', 16);str[16] = '\0';
2、尾部\n的个数为3
3、strncpy(str, a, strlen(a) - 3);
4、strncpy(&str[sizeof(str) - 3], a + strlen(a) - 3, 3);

#define NEED_BYTES                16

int main(int argc, char **argv)
{
        const char *a="abcd\n\n\n";
        char str[NEED_BYTES + 1];
        int count = 0;
       
        const char *p = a + strlen(a) - 1;
        memset(str, ' ', NEED_BYTES);
        str[NEED_BYTES] = '\0';
        while(p > a)
        {
                if(*p == '\n')
                        ++count;
                --p;
        }
        strncpy(str, a, strlen(a) - count);
        strncpy(&str[sizeof(str) - count - 1], a + strlen(a) - count, count);
       
        printf("---%s, strlen(str): %d\n", str, strlen(str));

        return 0;
}

论坛徽章:
0
3 [报告]
发表于 2008-06-11 09:12 |只看该作者
把最后的'\n'变成0然后补空格'\n' ?

论坛徽章:
0
4 [报告]
发表于 2008-06-11 09:13 |只看该作者

回复 #2 茎茎 的帖子

可以考虑考虑,不过倒是没这么弄过,不过还是谢谢

论坛徽章:
0
5 [报告]
发表于 2008-06-11 09:15 |只看该作者

回复 #2 茎茎 的帖子

怎么能在"\n"前面开始补空格呢?

论坛徽章:
0
6 [报告]
发表于 2008-06-11 09:20 |只看该作者
把\n放在最后,然后把空格放在\n之前。

论坛徽章:
0
7 [报告]
发表于 2008-06-11 09:26 |只看该作者

回复 #5 cugb_cat 的帖子

是啊,我就想这样,可以咋放呢

论坛徽章:
0
8 [报告]
发表于 2008-06-11 09:28 |只看该作者
如果用字符数组存储的,应该比较容易吧

论坛徽章:
0
9 [报告]
发表于 2008-06-11 09:33 |只看该作者

回复 #7 zszjxh 的帖子

说说您的建议?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2008-06-11 09:34 |只看该作者
直接赋值不行吗.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP