gpt4 book ai didi

c - 在 C 中的第五个字符后插入连字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:54 24 4
gpt4 key购买 nike

我有一个字符数组,我想在每五个字符后插入连字符。我尝试了以下代码,但正在寻找更好的方法来完成此任务,我应该使用什么字符串函数,以及如何使用?谢谢。 :D

#include <stdio.h>
#include <string.h>
int main()
{
char str[]="356a192b7913b04c54574d18c28d46e6395428ab";
char buf[50];

sprintf(buf, "%.5s-%.5s-%.5s-%.5s-%.5s-%.5s-%.5s-%.5s",str, str+5,str+10,str+15,str+20,str+25,str+30,str+35,str+40);
printf("%s",buf);
return 0;
}

最佳答案

你知道你想要 (length - 1)/5 连字符。所以对于 buf,你需要存储 buf[len + (len -1)/5 + 1]; 个字符。然后简单地遍历 str 中的字符并且(跳过 i = 0 的情况)如果 i % 5 == 0 写一个连字符到buf 除了str 复制字符。

把它放在一起,你可以做类似的事情:

#include <stdio.h>
#include <string.h>

#define HYPHPOS 5

int main(void) {

char str[] = "356a192b7913b04c54574d18c28d46e6395428ab";
size_t len = strlen (str);
char buf[len + (len -1)/ HYPHPOS + 1], *p = buf;

for (size_t i = 0; i < len; i++) {
if (i && i % HYPHPOS == 0)
*p++ = '-';
*p++ = str[i];
}
*p = 0;

printf ("str : %s\nbuf : %s\n", str, buf);

return 0;
}

您也可以简单地使用str[i] 作为循环测试子句。

示例使用/输出

$ ./bin/hyphenate
str : 356a192b7913b04c54574d18c28d46e6395428ab
buf : 356a1-92b79-13b04-c5457-4d18c-28d46-e6395-428ab

检查一下,如果您还有其他问题,请告诉我。

关于c - 在 C 中的第五个字符后插入连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47985861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com